Главная

Java

Многопоточность

Synchronizers


пример 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();
    }
}


Полезные ссылки: