Как ждать завершения всех потоков, используя ExecutorService?
Мне нужно выполнить некоторое количество задач 4 за один раз, что-то вроде этого:
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
//...wait for completion somehow
Как я могу получить уведомление, когда все они будут завершены? Пока я не могу думать о чем-либо лучше, чем установить какой-либо глобальный счетчик задач и уменьшить его в конце каждой задачи, а затем отслеживать в бесконечном цикле этот счетчик, чтобы он стал 0; или получить список фьючерсов и в бесконечном цикле монитора isDone для всех из них. Каковы лучшие решения без бесконечных циклов?
Благодарю.