ExecutorService, wie man wartet, bis alle Aufgaben abgeschlossen sind

Was ist der einfachste Weg, um auf alle Aufgaben von @ zu wartExecutorService beenden? Meine Aufgabe ist in erster Linie rechnerisch, daher möchte ich nur eine große Anzahl von Jobs ausführen - einen auf jedem Kern. Im Moment sieht mein Setup so aus:

ExecutorService es = Executors.newFixedThreadPool(2);
for (DataTable singleTable : uniquePhrases) {   
    es.execute(new ComputeDTask(singleTable));
}
try{
    es.wait();
} 
catch (InterruptedException e){
    e.printStackTrace();
}

ComputeDTask implementiert lauffähig. Dies scheint die Aufgaben korrekt auszuführen, aber der Code stürzt bei @ await() mitIllegalMonitorStateException. Das ist seltsam, weil ich mit ein paar Spielzeugbeispielen rumgespielt habe und es schien zu funktionieren.

uniquePhrases enthält mehrere zehntausend Elemente. Sollte ich eine andere Methode anwenden? Ich suche etwas so einfaches wie möglich

Antworten auf die Frage(28)

Ihre Antwort auf die Frage