当前位置: 首页 > news >正文

倒计数器:CountDownLatch

CountDownLatch 是 Java 中用于多线程编程的一个同步工具。
它允许一个或多个线程等待其他线程执行完特定操作后再继续执行。
CountDownLatch 通过一个计数器来实现,
该计数器初始化为一个正整数,每当一个线程完成了指定操作,计数器就会减一。
当计数器变为零时,所有等待的线程将被唤醒,可以继续执行后续操作。
CountDownLatch 在并发编程中常用于等待多个线程完成某个任务,
然后再进行下一步操作。

倒计数器,门闩的含义就是把门锁起来,不让里面的线程跑出来。
因此,这个工具通常用来控制线程等待,它可以让某一个线程等待
直到倒计数结束再开始执行。

public class CountDownLatchDemo implements Runnable{static final CountDownLatch end = new CountDownLatch(10);static final CountDownLatchDemo demo = new CountDownLatchDemo();@Overridepublic void run() {try{Thread.sleep(new Random().nextInt(10)*1000);System.out.println("check complete");end.countDown();}catch (InterruptedException e){e.printStackTrace();}}public static void main(String[] args) {ExecutorService executorService = Executors.newFixedThreadPool(10);for(int i =0;i<10;i++){executorService.submit(demo);}try {end.await();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("Finish!");executorService.shutdown();}
}

生成一个CountDownLatch实例,计数数量为10,
这表示需要10个线程完成任务等待在CountDownLatch上的线程才能继续执行。
代码中使用CountDownLatch.countdown()方法,通知CountDownLatch,
一个线程已经完成了任务,倒计数器减1.
CountDownLatch.await()方法,要求主线程等待所有检查任务全部完成,
待10个任务全部完成后,主线程才能继续执行。

http://www.lryc.cn/news/263794.html

相关文章:

  • vue内容渲染
  • Kafka为什么能高效读写数据
  • Flink系列之:Table API Connectors之Debezium
  • 【Python基础】文件读写
  • 电脑风扇控制软件Macs Fan Control mac支持多个型号
  • clangd:Couldn‘t build compiler instance
  • Springboot启动出现Error to process server push response的解决方法
  • P2P网络下分布式文件共享场景的测试
  • 计算机组成原理综合1
  • 探秘 AJAX:让网页变得更智能的异步技术(下)
  • CentOs7.x安装部署SeaTunnelWeb遇到的坑
  • Netlink通信
  • Python打造简单而强大的聊天机器人:详解与实例代码
  • Unity 通过代码将一张大图切成多个小图的方法
  • Spring Cloud Gateway请求路径修改指南:详解ServerWebExchange的完美解决方案及代码示例
  • AI+爬虫 爬虫宝
  • 【matlab】绘制横状双组渐变柱状图
  • 如何下载知网论文、专利的PDF格式
  • SMARTFORMS打印问题
  • uniapp组件和周期的知识点以及怎么使用
  • 【Java JVM】实例对象的创建
  • sectigo多域名通配符证书
  • vue 流光边框矩形圆形容器
  • 明理信息科技打造专属个人或企业知识付费平台,核心功能设计
  • 超结MOS/低压MOS在5G基站电源上的应用-REASUNOS瑞森半导体
  • 字节8年经验之谈 —— 如何从0开始做自动化测试?
  • 深入探索Zookeeper的ZAB协议:分布式系统的核心解析
  • 安捷伦Agilent 34970A数据采集
  • Apache Flume(5):多个agent模型
  • 如何在Ubuntu系统中安装VNC并结合内网穿透实现远程访问桌面