• Java培训教程JUC强大的辅助类讲解CountDownLatch减少计数


    1.CountDownLatch减少计数

    • 原理

    CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。

    其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。

    • 程序代码

    package com.atguigu.thread;

    import java.util.concurrent.CountDownLatch;

    /**

     *

     * @Description:

     *  *让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。

     *

     * CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。

     * 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),

     * 当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。

     *

     * 解释:6个同学陆续离开教室后值班同学才可以关门。

     *

     * main主线程必须要等前面6个线程完成全部工作后,自己才能开干

     * @author xialei

     */

    public class CountDownLatchDemo

    {

       public static void main(String[] args) throws InterruptedException

       {

             CountDownLatch countDownLatch = new CountDownLatch(6);

           for (int i = 1; i <=6; i++) //6个上自习的同学,各自离开教室的时间不一致

           {

              new Thread(() -> {

                  System.out.println(Thread.currentThread().getName()+”\t 号同学离开教室”);

                  countDownLatch.countDown();

              }, String.valueOf(i)).start();

           }

           countDownLatch.await();

           System.out.println(Thread.currentThread().getName()+”\t****** 班长关门走人,main线程是班长”);

       }

    }

  • 相关阅读:
    9、Nacos服务注册服务端源码分析(总结篇)
    慢生活,慢光阴
    Java第1章 入门及idea开发工具
    API接口测试-postman用例集/环境导入及导出方案
    HashTable与HashMap到底有啥区别?来看看源码分析分析
    Spring Security认证器实现
    IntelliJ IDEA 2022.3正式发布,配置云同步&支持Redis好用到炸
    【CT】LeetCode手撕—415. 字符串相加
    FastJson 漏洞复现
    Java JVM相关
  • 原文地址:https://blog.csdn.net/zjjcchina/article/details/128032607