Мне нужно отправить несколько задач, а затем дождаться их, пока не будут доступны все результаты. Каждый из них добавляет String
в Vector
(который по умолчанию синхронизирован). Затем мне нужно начать новую задачу для каждого результата в Vector, но мне нужно сделать это, только когда все предыдущие задачи перестали выполнять свою работу.Исполнители Java: дождитесь завершения задачи.
Я хочу использовать 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?
Посмотрите на http://stackoverflow.com/questions/1228433/java-parallel-work-iterator/1228445 – Tim