我已經使用執行程序提交了一個任務,並且需要它在一段時間後停止(例如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