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

发布时间:2020年09月01日作者:atguigu浏览次数:664

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线程是班长”);

   }

}

想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训课程视频供广大学员下载学习


上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦3层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)

西安市雁塔区和发智能大厦B座3层(西安校区)

成都市成华区北辰星拱青创园(成都校区)