Qual é a maneira mais simples de aguardar o ExecutorService
término de todas as tarefas ? Minha tarefa é principalmente computacional, então eu só quero executar um grande número de tarefas - uma em cada núcleo. No momento, minha configuração fica assim:
ExecutorService es = Executors.newFixedThreadPool(2);
for (DataTable singleTable : uniquePhrases) {
es.execute(new ComputeDTask(singleTable));
}
try{
es.wait();
}
catch (InterruptedException e){
e.printStackTrace();
}
ComputeDTask
implementa executável. Isso parece executar as tarefas corretamente, mas o código falha wait()
com IllegalMonitorStateException
. Isso é estranho, porque eu brinquei com alguns exemplos de brinquedos e pareceu funcionar.
uniquePhrases
contém várias dezenas de milhares de elementos. Devo estar usando outro método? Estou procurando algo o mais simples possível
Executors.newFixedThreadPool(System.getRuntime().availableProcessors());
es
) quando quiser esperar - o bloqueio será liberado automaticamente enquanto a espera