Wie kann ich mit ExecutorService warten, bis alle Threads beendet sind?

Ich muss eine Anzahl von Aufgaben 4 gleichzeitig ausführen, etwa so:

ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
    taskExecutor.execute(new MyTask());
}
//...wait for completion somehow

Wie kann ich benachrichtigt werden, wenn alle abgeschlossen sind? Im Moment kann ich mir nichts Besseres vorstellen, als einen globalen Task-Zähler zu setzen und ihn am Ende jeder Task zu verringern. Dann überwach diesen Zähler in einer Endlosschleife, um 0 zu werden. oder eine Liste von Futures abrufen und in Endlosschleifen für alle isDone überwachen. Was sind bessere Lösungen ohne Endlosschleifen?

Vielen Dank.

Antworten auf die Frage(24)

Ihre Antwort auf die Frage