Java Exécuteurs: comment puis-je arrêter soumis tâches?

J'ai soumis une tâche à l'aide de exécuteurs testamentaires et j'en ai besoin pour s'arrêter après un certain temps (par exemple 5 minutes). J'ai essayé de faire comme ceci:

   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       
         }
   }

Mais j'ai toujours une erreur: je partage un Vecteur qui doit être modifié par les tâches et ensuite lu par un fil, et même si j'ai arrêter toutes les la tâche, si le délai d'attente se produit-je obtenir:

Exception in thread "Thread-1" java.util.ConcurrentModificationException

Est-il quelque chose de mal? Comment puis-je arrêter les tâches soumises qui travaillent encore au bout de 5 minutes?

Di Fazio: j'ai formaté le code et ajout d'une accolade fermante, veuillez vérifier l'exactitude.
Merci, je suis désolé pour la mauvaise mise en forme.

OriginalL'auteur Raffo | 2009-09-13