Tuesday, January 20, 2015

Monitoring a Thread in java pgm



Monitoring a Thread

class MyThread extends Thread
{
   boolean waiting= true;
   boolean ready= false;
   MyThread(){}
   public void run()
  {
      String thrdName = Thread.currentThread().getName();
      System.out.println(thrdName + " starting.");
      while(waiting)
      System.out.println("waiting:"+waiting);
      System.out.println("waiting...");
      startWait();
      try
      {
         Thread.sleep(1000);
      }
      catch(Exception exc)
     {
         System.out.println(thrdName + " interrupted.");
      }
      System.out.println(thrdName + " terminating.");
   }
   synchronized void startWait()
  {
      try
     {
         while(!ready) wait();
      }
      catch(InterruptedException exc)
     {
         System.out.println("wait() interrupted");
      }
   }
   synchronized void notice()
   {
      ready = true;
      notify();
   }
}
public class Main
 {
   public static void main(String args[]) throws Exception
   {
      MyThread thrd = new MyThread();
      thrd.setName("MyThread #1");
      showThreadStatus(thrd);
      thrd.start();
      Thread.sleep(50);
      showThreadStatus(thrd);
      thrd.waiting = false;
      Thread.sleep(50);
      showThreadStatus(thrd);
      thrd.notice();
      Thread.sleep(50);
      showThreadStatus(thrd);
      while(thrd.isAlive())
      System.out.println("alive");
      showThreadStatus(thrd);
   }
   static void showThreadStatus(Thread thrd)
   {
      System.out.println(thrd.getName()+"
      Alive:="+thrd.isAlive()+"
      State:=" + thrd.getState() );
   }
}

No comments:

Post a Comment