CountDownLatch---减法计数器

  CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。它本质上是AQS的上层实现的共享锁。如果同时开启多个线程执行任务,必须等到所有的线程都执行完再执行主线程,这个时候就需要用到CountDwonLatch来控制了。先上代码,更好理解:

 示例

    public static void main(String[] args) {
        //减法计数器,用来判断全部线程是否全部执行完成。设置10表示等待10个线程全部执行完成。
        CountDownLatch count = new CountDownLatch(10);
        for (int i=1;i<=10;i++){
            new Thread(()->{
                System.out.println(Thread.currentThread().getName() + "出去了");
                count.countDown();// -1
            },String.valueOf(i)).start();
        }

        //主线程等待子线程全部执行完毕才继续执行
        try {
            count.await();//等待计数器归零(等待计数器计数完成)
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("关门了");

    }
原文地址:https://www.cnblogs.com/bobobjh/p/14472732.html