Thread Basics
1-
Thread
Creation :
There are two ways of creating a new thread.
Way-1 Implementing Runnable Interface:
public class CustRunnable implements Runnable {
public void run() {
System.out.println("Executed !");
}
public static void main(String args[]) {
Thread myThread = new Thread(new CustRunnable());
myThread.start()
}
}
Way-2 Extending Thread Interface:
public class CustThread extends Thread {
public void run() {
System.out.println("Executed from a
new thread!");
}
public static void main(String args[]) {
CustThread myThread = new CustThread();
myThread.start();
}
}
First way is preferable. Because it leaves the flexibility of extending
another class and compatible with higher level thread management APIs.
2 -
Important
Thread Methods
-
public static void sleep(long millis) throws InterruptedException
public static void sleep(long millis, int nanos) throws InterruptedException
Executing threads goes to sleep for specified times
amount. Puts thread into TIMED_WAITING state. Thread
doesn’t leave locks it obtains. If thread is interrupted during sleep, InterruptedException is raised.
-
public void interrupt()
Used to interrupt a thread. When a thread is
interrupted it stops what it is doing and does some thing in respose to
interrupt.
Generally threads respond to interrupts by stopping
execution. A typical respond is as in the example.
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException
e) {
return;// stop execution
}
}
Thread related methods tend to throw InterruptedException. If a thread is not invoking a method that throws InterruptedException, a thread my check interrupt status by calling Thread.interrupted()method.
·
Remember after throwing InterruptedException or returning true to static Thread.interrupted() method, thread’s internal interrupt status flag is cleared.
·
The non-static version of interrupted() method doesn’t clear interrupt status flag.
-
public final void join() throws InterruptedException
public final void join(long millis) throws InterruptedException
public final void join(long millis,int nanos) throws InterruptedException
Allows a thread
to pause execution until another thread finishes execution. Puts thread into WAITING state. Overloaded versions allows to specfy a
timeout value and puts thread into TIMED_WAITING state.
May throw InterruptedException .
Comments
Post a Comment