Necesito enviar una cantidad de tareas y luego esperar hasta que todos los resultados estén disponibles. Cada uno de ellos agrega un String
a un Vector
(que está sincronizado de manera predeterminada). Luego, debo comenzar una nueva tarea para cada resultado en el Vector, pero necesito hacer esto solo cuando todas las tareas anteriores hayan dejado de hacer su trabajo.ejecutores de Java: espere la finalización de la tarea.
Quiero usar Java Executor, en particular intenté usar Executors.newFixedThreadPool(100)
para usar un número fijo de hilo (tengo un número variable de tareas que puede ser 10 o 500) pero soy nuevo con los ejecutores y yo no sé cómo esperar la terminación de la tarea. Esto es algo así como un pseudocódigo de lo que mi programa tiene que hacer:
ExecutorService e = Executors.newFixedThreadPool(100);
while(true){
/*do something*/
for(...){
<start task>
}
<wait for all task termination>
for each String in result{
<start task>
}
<wait for all task termination>
}
no puedo hacer un e.shutdown porque estoy en un while (true) y necesito volver a utilizar el executorService
..
¿Me puede ayudar? ¿Me puede sugerir una guía/libro sobre ejecutores de Java?
Eche un vistazo a http://stackoverflow.com/questions/1228433/java-parallel-work-iterator/1228445 – Tim