我已经使用执行程序提交了一个任务,并且需要它在一段时间后停止(例如5分钟)。我试图做这样的:Java执行者:如何停止提交的任务?
for (Future<?> fut : e.invokeAll(tasks, 300, TimeUnit.SECONDS)) {
try {
fut.get();
} catch (CancellationException ex) {
fut.cancel(true);
tasks.clear();
} catch(ExecutionException ex){
ex.printStackTrace(); //FIXME: gestita con printstack
}
}
但我总是得到一个错误:我有一个共同的载体,需要由任务由一个线程修改,然后阅读,即使我停止所有的任务,如果发生超时,我得到:
Exception in thread "Thread-1" java.util.ConcurrentModificationException
有什么错吗?如何停止5分钟后仍在工作的任务?
@Raffaele迪法齐奥:我已格式化的代码 - 并增加了一个右括号,请检查的准确性。 – akf 2009-09-13 16:18:16
谢谢,我很抱歉格式不正确。 – Raffo 2009-09-13 17:02:45