Java executors: poczekaj na zakończenie zadania. [duplikować

To pytanie ma już odpowiedź tutaj:

Jak czekać na zakończenie wszystkich wątków za pomocą ExecutorService? 24 odpowiedzi

Muszę przesłać kilka zadań, a następnie poczekać na nie, aż wszystkie wyniki będą dostępne. Każdy z nich dodajeString doVector (domyślnie synchronizowane). Następnie muszę rozpocząć nowe zadanie dla każdego wyniku w wektorze, ale muszę to zrobić tylko wtedy, gdy wszystkie poprzednie zadania przestaną wykonywać swoją pracę.

Chcę używać Java Executora, w szczególności próbowałem użyćExecutors.newFixedThreadPool(100), aby użyć stałej liczby wątków (mam zmienną liczbę zadań, która może wynosić 10 lub 500), ale jestem nowy z wykonawcami i nie wiem, jak czekać na zakończenie zadania. Jest to coś w rodzaju pseudokodu tego, co mój program musi zrobić:

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>
}

Nie mogę zrobić e.shutdown, ponieważ jestem za chwilę (prawda) i muszę ponownie użyćexecutorService ...

Możesz mi pomóc? Czy możesz zasugerować mi przewodnik / książkę o wykonawcach Java?

questionAnswers(5)

yourAnswerToTheQuestion