пример CountDownLatch:
public class CountDownLatchExample {
public static void main(String[] args) throws InterruptedException {
CountDownLatch countDownLatch = new CountDownLatch(8);
new Worker(countDownLatch);
new Worker(countDownLatch);
new Worker(countDownLatch);
new Worker(countDownLatch);
new Worker(countDownLatch);
new Worker(countDownLatch);
new Worker(countDownLatch);
new Worker(countDownLatch);
countDownLatch.await();
System.out.println("Все работники отработали");
}
}
class Worker extends Thread {
private final CountDownLatch countDownLatch;
Worker(CountDownLatch countDownLatch) {
this.countDownLatch = countDownLatch;
start();
}
@Override
public void run() {
System.out.println("начал работать");
try {
sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("завершил работу");
countDownLatch.countDown();
}
}