Mega Code Archive

 
Categories / Java / Threads
 

Monitor a threads status

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() );   } }