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