【发布时间】:2010-11-27 22:19:36
【问题描述】:
我已经使用执行器提交了一个任务,我需要它在一段时间后停止(例如 5 分钟)。我试过这样做:
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 Di Fazio:我已格式化代码 - 并添加了右大括号,请检查准确性。
-
谢谢,很抱歉格式错误。
标签: java multithreading executorservice