¿Cuál es la forma más sencilla de esperar ExecutorService
a que finalicen todas las tareas ? Mi tarea es principalmente computacional, por lo que solo quiero ejecutar una gran cantidad de trabajos, uno en cada núcleo. En este momento mi configuración se ve así:
ExecutorService es = Executors.newFixedThreadPool(2);
for (DataTable singleTable : uniquePhrases) {
es.execute(new ComputeDTask(singleTable));
}
try{
es.wait();
}
catch (InterruptedException e){
e.printStackTrace();
}
ComputeDTask
Implementos ejecutables. Esto aparece para ejecutar las tareas correctamente, pero el código se bloquea en wait()
la IllegalMonitorStateException
. Esto es extraño, porque jugué con algunos ejemplos de juguetes y parecía funcionar.
uniquePhrases
contiene varias decenas de miles de elementos. ¿Debo estar usando otro método? Estoy buscando algo lo mas simple posible
Executors.newFixedThreadPool(System.getRuntime().availableProcessors());
es
) cuando desea esperarlo; el bloqueo se liberará automáticamente mientras espera