He enviado una tarea utilizando ejecutores y necesito que se detenga después de un tiempo (por ejemplo, 5 minutos). He intentado hacer así:Ejecutores de Java: ¿cómo puedo detener tareas enviadas?
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 me sale un error: Tengo un vector común que necesita ser modificado por las tareas y luego leer de un hilo, e incluso si dejo toda la tarea, si se produce el tiempo de espera, obtengo:
Exception in thread "Thread-1" java.util.ConcurrentModificationException
¿Hay algún problema? ¿Cómo puedo detener las tareas enviadas que siguen funcionando después de 5 minutos?
@Raffaele Di Fazio: He formateado el código - y añadió una llave de cierre, por favor verificar su exactitud. – akf
Gracias, lo siento por el formato incorrecto. – Raffo