非常有用的并发控制-倒计时器CountDownLatch

简介: CountDownLatch见名思义,即倒计时器,是多线程并发控制中非常有用的工具类,它可以控制线程等待,直到倒计时器归0再继续执行。

给你出个题,控制5个线程执行完后主线徎再往下执行,并统计5个线程的所耗时间。当然我们可以通过join的形式完成这道题,但如果我说统计100个1000个线程呢?难道要写1000个join等待吗?这显然是不现实的。

废话少说,我们来做一个例子看看上面的题怎么实现,并理解倒计时器。

image.png

首先通过new CountDownLatch(5)约定了倒计时器的数量,在这里也是线程的数量,每个线程执行完后再对倒计时器-1。countDown()方法即是对倒计时器-1,这个方法需要放在finally中,一定要保证在每个线程中得到释放,不然子线程如果因为某种原因报错倒计时器永远不会清0,则会导报主线程会一直等待。


await()方法即是主线程阻塞等待倒计器归0后再继续往下执行,当然await可以带时间进去,等待多久时间后不管倒计时器有没有归0主线程继续往下执行。


如上面的例子所示,我们输出了倒计时器最后的数字0,表示倒计时器归0了,也输出了从开始到结束所花费的时间。从这个例子可以完全理解倒计时器的含义,这个工具类在实际开发经常有用到,也很好用。


推荐去我的博客阅读更多:


1.Java JVM、集合、多线程、新特性系列教程


2.Spring MVC、Spring Boot、Spring Cloud 系列教程


3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程


4.Java、后端、架构、阿里巴巴等大厂最新面试题


觉得不错,别忘了点赞+转发哦!

目录
相关文章
|
监控 Serverless 持续交付
阿里云云效产品使用问题之如何让流水线支持构建 flutter web 应用到 OSS
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
缓存 JavaScript 前端开发
start.aliyun.com 正式上线!极速构建 bootstrap 应用
背景 相信很多人都使用过start.spring.io来初始化自己的spring boot工程,这个工具为开发者提供了丰富的可选组件,并且可以选择多种打包方式,大大方便了开发人员的使用。最近,阿里的nacos、sentinel也进入start.spring.io的选项中,进一步的方便开发者使用阿里云的产品。
2474 104
|
JavaScript Linux 开发工具
Linux上安装Node.js
Linux上安装Node.js
562 1
|
消息中间件 Java Kafka
springboot 连接 kafka集群(kafka版本 2.13-3.4.0)
发布者我们使用 KafkaTemplate 来进行消息发布,所以需要先对其进行一些必要的配置
785 1
|
机器学习/深度学习 编解码 固态存储
纯卷积Backbone巅峰 | MogaNet登峰造极,超越ConvNeXt、ParC-Net和SWin
纯卷积Backbone巅峰 | MogaNet登峰造极,超越ConvNeXt、ParC-Net和SWin
740 0
纯卷积Backbone巅峰 | MogaNet登峰造极,超越ConvNeXt、ParC-Net和SWin
|
安全 架构师 Cloud Native
逾百位开发者到场,超 2 万人线上观看!龙蜥社区开发者服务 devFree MeetUp 精彩回顾来啦
来自众多厂商及科研院所的12位专家和教授,分享了12场精彩主题演讲。视频回放已上线,欢迎观看。
|
Java 机器人 物联网
【C++初阶:内存管理】C/C++内存分布及管理方式 | new/delete实现原理及operator new和operator delete函数 下
【C++初阶:内存管理】C/C++内存分布及管理方式 | new/delete实现原理及operator new和operator delete函数
521 0
【C++初阶:内存管理】C/C++内存分布及管理方式 | new/delete实现原理及operator new和operator delete函数 下
J3
快捷餐饮之店家后台系统管理实现
快捷餐饮之店家后台系统管理实现
J3
316 0
快捷餐饮之店家后台系统管理实现
|
存储 Java 关系型数据库
20 个实例玩转 Java 8 Stream
20 个实例玩转 Java 8 Stream
394 0
20 个实例玩转 Java 8 Stream
|
监控 前端开发 JavaScript

热门文章

最新文章