我有一个事件队列要处理。线程将事件添加到队列中。
我创建了一个可运行的任务,该任务在该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?
让任务更新一些状态字段是个好主意吗?
谢谢