Multi-threading with Runnable


  class NewThread implements Runnable
  {
      String name; 
      Thread t;

      NewThread(String threadname)
      {
          name = threadname;
          t = new Thread(this, name);
          System.out.println("New thread: " + t);
          t.start();
      }

      public void run()
      { 
          try
          {
              for (int i = 5; i > 0; i--)
              {
                  System.out.println(name + ": " + i);
                  Thread.sleep(1000);
              }
          }
          catch (InterruptedException e)
          {
              System.out.println(name + " Interrupted");
          }
          System.out.println(name + " exiting");
      }
  }

  class MultiThread
  {
      public static void main(String args[])
      {
          new NewThread("One");
          new NewThread("Two");
          new NewThread("Three");

          try
          {
              Thread.sleep(10000);
          }
          catch (InterruptedException e)
          {
              System.out.println("Main Thread interrupted");
          }
          System.out.println("Main Thread Exiting");
      }
  }

Output: