1. 程式人生 > >執行緒狀態監聽

執行緒狀態監聽

  所謂執行緒的狀態監控就是指通過回撥或者監聽的手段,得知當前執行執行緒執行的狀況,啟動,執行中,正常結束,異常結束等狀況,那麼我們將在本章中重點來討論這幾個問題,並且我們也會通過例項來演示如何監控執行緒的狀態

1,定義監聽介面



public interface ThreadListener {


public Object  threadStart(Object[] args);

public Object threadRunning(Object[] args);

public Object threadFinish(Object[] args);

public Object threadException(Object[] args);


}

2,對執行緒任務進行包裝

 abstract public class RunnableWarper implements Runnable{
private ThreadListener threadListener = null;

private final static ThreadListener DEFAULT_LISTENER = new ThreadListener(){
private String name = Thread.currentThread().getName();


@Override
public Object threadStart(Object[] args) {
// TODO Auto-generated method stub
System.out.println(name+" start....");
return null;
}


@Override
public Object threadRunning(Object[] args) {
System.out.println(name+" running");
return null;
}


@Override
public Object threadFinish(Object[] args) {
System.out.println(name+" finish");
return null;
}


@Override
public Object threadException(Object[] args) {
System.out.println(name+" exception");
return null;
}

};

   public RunnableWarper(){
  this(DEFAULT_LISTENER);
   }
public RunnableWarper(ThreadListener listener) {
this.threadListener = listener;
}
@Override
public void run() {
try{
threadListener.threadStart(null);
handler();
threadListener.threadFinish(null);
}catch(Exception e){
threadListener.threadException(null);
}

}
abstract public void handler();


}

其中 handler()方法可以看作是一個模板方法,任何需要執行定義關於該執行緒的相關睡眠時間和一些任務工作都可以在裡面定義實現。