Java Executors: как я могу остановить отправленные задачи?

Я отправил задание с использованием исполнителей, и мне нужно, чтобы оно прекратилось через некоторое время (например, через 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 минут?

Ответы на вопрос(5)

Ваш ответ на вопрос