我有一個事件隊列要處理。一個線程將事件添加到隊列中。
我已經創建了一個可運行的任務,在run
方法中完成處理事件所需的全部任務。
我已經宣佈每個任務都有Executors.newCachedThreadPool();
和I execute
。通過executorservice處理順序事件
public class EventHandler {
private static final ExecutorService handlers = Executors.newCachedThreadPool();
public void handleNextEvent(AnEvent event){
handlers.execute(new Task(evt));
}
public class Task implements Runnable{
@Override
public void run() {
//Event processing
}
}
public AnotherClass{
public void passEvent(AnEvent evt)//This is called by another thread
{
EventHandler.handleNextEvent(evt);
}
}
我的問題是,如果我叫執行人execute
,我的代碼將獲得下一個事件,並通過運行在執行下一可運行。 我的目的是僅在前一個任務結束後才從隊列中處理下一個事件。
我怎麼會知道前一個任務已經完成或沒有,所以我知道我可以再次調用handleNextEvent?
由任務更新了一些狀態字段是一個好主意嗎?
感謝
你想要的事件來處理一個又一個? – 2010-11-05 08:38:10
@ckuetbach:是的,按照它們的順序排列。 – Cratylus 2010-11-05 09:12:46