我有一个事件队列要处理。一个线程将事件添加到队列中。
我已经创建了一个可运行的任务,在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