Quelle est la façon la plus simple d'attendre que toutes les tâches d' ExecutorService
à la fin? Ma tâche est principalement de calcul, donc je tiens juste à exécuter un grand nombre d'emplois - un sur chaque cœur. Maintenant ma configuration ressemble à ceci:
ExecutorService es = Executors.newFixedThreadPool(2);
for (DataTable singleTable : uniquePhrases)
{
es.execute(new ComputeDTask(singleTable));
}
try
{
es.wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
ComputeDTask
implements runnable. Cela semble d'exécuter les tâches correctement, mais le code se bloque sur wait()
avec IllegalMonitorStateException
. C'est étrange, car j'ai joué un peu avec certains jouets exemples et il est apparu à travailler.
uniquePhrases
contient plusieurs dizaines de milliers d'éléments. Dois-je utiliser une autre méthode? Je suis à la recherche de quelque chose d'aussi simple que possible