処理するイベント キューがあります。スレッドはイベントをキューに追加します。メソッドでイベントを処理するために必要なすべてを
実行する実行可能なタスクを作成しました。私は各タスク を
宣言しました。run
Executors.newCachedThreadPool();
execute
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 を再度呼び出すことができるように、前のタスクが終了したかどうかをどのように確認できますか?
タスクによっていくつかのステータス フィールドを更新するのは良い考えですか?
ありがとう