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?