主要并发工具类-CountdownLaunch的使用

2020-02-10  本文已影响0人  飞奔吧牛牛

从字面理解 CountDownLatch,意思是倒数门闩。它的作用是多个线程做汇聚。主线程开启了 A、B、C 三个线程做不同的事情,但是主线程需要等待 A、B、C 三个线程全部完成后才能继续后面的步骤。此时就需要 CountDownLatch 出马了。CountDownLatch 会阻塞主线程,直到计数走到 0,门闩才会打开,主线程继续执行。

private static CountDownLatch countDownLatch = new CountDownLatch(3);

    public static void main(String[] args) throws InterruptedException {
        System.out.println("主线程开始工作");
        new Thread(() -> {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("线程1完成任务");
            countDownLatch.countDown();
        }).start();
        new Thread(() -> {
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("线程2完成任务");
            countDownLatch.countDown();
        }).start();
        new Thread(() -> {
            try {
                Thread.sleep(150);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("线程3完成任务");
            countDownLatch.countDown();
        }).start();
        countDownLatch.await();
        System.out.println("全部完成任务,主线程继续执行。。。");

    }

结果:

主线程开始工作
线程2完成任务
线程1完成任务
线程3完成任务
全部完成任务,主线程继续执行。。。
上一篇 下一篇

猜你喜欢

热点阅读