Ejecutores de Java: ¿cómo puedo detener las tareas enviadas?

He enviado una tarea utilizando ejecutores y necesito que se detenga después de un tiempo (por ejemplo, 5 minutos). He intentado hacer así:

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

Pero siempre recibo un error: tengo un Vector compartido que necesita ser modificado por las tareas y luego leído por un hilo, e incluso si detengo toda la tarea, si se produce el tiempo de espera, obtengo:

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

¿Hay algo mal? ¿Cómo puedo detener las tareas enviadas que siguen funcionando después de 5 minutos?

Respuestas a la pregunta(5)

Su respuesta a la pregunta