Java исполнители: дождитесь завершения задачи. [Дубликат]
На этот вопрос уже есть ответ:
Как ждать завершения всех потоков, используя ExecutorService? 24 ответа Мне нужно отправить несколько заданий, а затем дождаться их, пока все результаты не станут доступны. Каждый из них добавляетString
вVector
(по умолчанию синхронизируется). Затем мне нужно запустить новое задание для каждого результата в векторе, но это нужно делать только тогда, когда все предыдущие задания перестали выполнять свою работу.
Я хочу использовать Java Executor, в частности, я пытался использоватьExecutors.newFixedThreadPool(100)
для того, чтобы использовать фиксированное количество потоков (у меня есть переменное число задач, которое может быть 10 или 500), но я новичок с исполнителями, и я не знаю, как ждать завершения задачи. Это что-то вроде псевдокода того, что должна делать моя программа:
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>
}
Я не могу сделать e.shutdown, потому что я некоторое время (правда), и мне нужно повторно использоватьexecutorService
...
Можете ли вы мне помочь? Можете ли вы предложить мне руководство / книгу о Java исполнителей?