У меня есть эта простая схема:программ продолжают выполнение хотя все latch.countdown() называется
int parallelism = 4; //4 tasks
ExecutorService executor = Executors.newCachedThreadPool();
CountDownLatch latch = new CountDownLatch(parallelism);
for(int i=0;i<parallelism;i++){
executor.execute(new MyTask());
}
latch.await();
System.out.println("done");
Где Task просто вызывает
public void run(){
System.out.println("working");
latch.countDown();
}
Даже если исполнение дает мне:
working
working
working
working
done
общая программа продолжает выполнять! Как так?
Работает так, как ожидалось. Основной поток ждет, пока все остальные потоки не назовут 'countDown()'. Чего ты ожидал? – TheLostMind