Runnable

The Runnable interface should be implemented by any class whose instances are intended to be executed by a thread.

A class that implements Runnable can run without subclassing Thread by instantiating a Thread instance and passing itself in as the target.

CODE

class RunnableDemo implements Runnable {
   private Thread t;
   private String threadName;

   RunnableDemo( String name){
       threadName = name;
       System.out.println("Creating " + threadName );
   }
   public void run() {
     System.out.println("Running " + threadName );
     try {
         for(int i = 4; i > 0; i--) {
           System.out.println("Thread: " + threadName + ", " + i);

           // Let the thread sleep for a while.
           Thread.sleep(50);
         }
     } catch (InterruptedException e) {
         System.out.println("Thread " + threadName + " interrupted.");
     }
     System.out.println("Thread " + threadName + " exiting.");
   }
   public void start ()
   {
     System.out.println("Starting " + threadName );
     if (t == null)
     {
         t = new Thread (this, threadName);
         t.start ();
     }
   }
}
public class TestThread {
   public static void main(String args[]) {
     RunnableDemo R1 = new RunnableDemo( "Thread-1");
     R1.start();

     RunnableDemo R2 = new RunnableDemo( "Thread-2");
     R2.start();
   }  
}

----------------------------------------------------------------------------------------------

class ThreadDemo extends Thread {
   private Thread t;
   private String threadName;

   ThreadDemo( String name){
       threadName = name;
       System.out.println("Creating " +  threadName );
   }
   public void run() {
      System.out.println("Running " +  threadName );
      try {
         for(int i = 4; i > 0; i--) {
            System.out.println("Thread: " + threadName + ", " + i);
            // Let the thread sleep for a while.
            Thread.sleep(50);
         }
     } catch (InterruptedException e) {
         System.out.println("Thread " +  threadName + " interrupted.");
     }
     System.out.println("Thread " +  threadName + " exiting.");
   }

   public void start ()
   {
      System.out.println("Starting " +  threadName );
      if (t == null)
      {
         t = new Thread (this, threadName);
         t.start ();
      }
   }

}

public class TestThread {
   public static void main(String args[]) {
      ThreadDemo T1 = new ThreadDemo( "Thread-1");
      T1.start();

      ThreadDemo T2 = new ThreadDemo( "Thread-2");
      T2.start();
   }   
}

 

Leave a comment