Java Executors: Warten Sie auf die Beendigung der Aufgabe. [Duplikat

Diese Frage hat hier bereits eine Antwort:

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

Ich muss eine Reihe von Aufgaben einreichen und dann auf sie warten, bis alle Ergebnisse verfügbar sind. Jeder von ihnen fügt einString zu einerVector (das ist standardmäßig synchronisiert). Dann muss ich für jedes Ergebnis im Vector eine neue Aufgabe starten. Dies muss ich jedoch nur dann tun, wenn alle vorherigen Aufgaben nicht mehr ausgeführt werden.

Ich möchte Java Executor verwenden, insbesondere habe ich versucht, @ zu verwendeExecutors.newFixedThreadPool(100), um eine feste Anzahl von Threads zu verwenden (ich habe eine variable Anzahl von Tasks, die 10 oder 500 sein kann), aber ich bin neu bei Executoren und weiß nicht, wie ich auf die Beendigung von Tasks warten soll. Dies ist so etwas wie ein Pseudocode dessen, was mein Programm tun muss:

ExecutorService e = Executors.newFixedThreadPool(100);
while(true){

/*do something*/

for(...){
<start task>
}

<wait for all task termination>

for each String in result{
<start task>
}

<wait for all task termination>
}

Ich kann e.shutdown nicht ausführen, da ich in einer Weile bin (true) und das @ wiederverwenden musexecutorService ...

Können Sie mir helfen? Können Sie mir einen Leitfaden / ein Buch über Java-Testamentsvollstrecker vorschlagen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage