Java中多线程同步类 CountDownLatch
发布时间 - 2026-01-11 00:55:17 点击率:次在多线程开发中,常常遇到希望一组线程完成之后在执行之后的操作,java提供了一个多线程同步辅助类,可以完成此类需求:

类中常见的方法:
其中构造方法:
CountDownLatch(int count) 参数count是计数器,一般用要执行线程的数量来赋值。
long getCount():获得当前计数器的值。
void countDown():当计数器的值大于零时,调用方法,计数器的数值减少1,当计数器等数零时,释放所有的线程。
void await():调所该方法阻塞当前主线程,直到计数器减少为零。
代码例子:
线程类:
import java.util.concurrent.CountDownLatch;
public class TestThread extends Thread{
CountDownLatch cd;
String threadName;
public TestThread(CountDownLatch cd,String threadName){
this.cd=cd;
this.threadName=threadName;
}
@Override
public void run() {
System.out.println(threadName+" start working...");
dowork();
System.out.println(threadName+" end working and exit...");
cd.countDown();//告诉同步类完成一个线程操作完成
}
private void dowork(){
try {
Thread.sleep(2000);
System.out.println(threadName+" is working...");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
测试类:
import java.util.concurrent.CountDownLatch;
public class TsetCountDownLatch {
public static void main(String[] args) {
try {
CountDownLatch cd = new CountDownLatch(3);// 表示一共有三个线程
TestThread thread1 = new TestThread(cd, "thread1");
TestThread thread2 = new TestThread(cd, "thread2");
TestThread thread3 = new TestThread(cd, "thread3");
thread1.start();
thread2.start();
thread3.start();
cd.await();//等待所有线程完成
System.out.println("All Thread finishd");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出结果:
thread1 start working... thread2 start working... thread3 start working... thread2 is working... thread2 end working and exit... thread1 is working... thread3 is working... thread3 end working and exit... thread1 end working and exit... All Thread finishd
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# countdownlatch
# java多线程CountDownLatch与线程池ThreadPoolExecutor/Execut
# Java countDownLatch如何实现多线程任务阻塞等待
# 如何使用CountDownLatch同步java多线程
# java使用CountDownLatch等待多线程全部执行完成
# JAVA多线程CountDownLatch使用详解
# Java中CountDownLatch进行多线程同步详解及实例代码
# 详解Java多线程编程中CountDownLatch阻塞线程的方法
# Java多线程编程之CountDownLatch同步工具使用实例
# Java多线程之同步工具类CountDownLatch
# 零时
# 多线程
# 此类
# 为零
# 类中
# pre
# class
# strong
# await
# import
# concurrent
# public
# TestThread
# brush
# extends
# util
# countDown
# text
# align
# center
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
利用JavaScript实现拖拽改变元素大小
javascript中的try catch异常捕获机制用法分析
JavaScript如何实现倒计时_时间函数如何精确控制
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
敲碗10年!Mac系列传将迎来「触控与联网」双革新
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
在线制作视频网站免费,都有哪些好的动漫网站?
如何在服务器上配置二级域名建站?
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Laravel如何使用Telescope进行调试?(安装和使用教程)
Laravel怎么使用artisan命令缓存配置和视图
Laravel安装步骤详细教程_Laravel环境搭建指南
昵图网官方站入口 昵图网素材图库官网入口
googleplay官方入口在哪里_Google Play官方商店快速入口指南
如何快速查询网址的建站时间与历史轨迹?
高防服务器租用首荐平台,企业级优惠套餐快速部署
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
python中快速进行多个字符替换的方法小结
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何利用DOS批处理实现定时关机操作详解
企业网站制作这些问题要关注
香港服务器租用费用高吗?如何避免常见误区?
Python进程池调度策略_任务分发说明【指导】
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Bootstrap CSS布局之列表
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
如何在IIS中新建站点并配置端口与IP地址?
如何快速搭建虚拟主机网站?新手必看指南
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
图册素材网站设计制作软件,图册的导出方式有几种?
简单实现Android文件上传
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
iOS发送验证码倒计时应用
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何用腾讯建站主机快速创建免费网站?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
高防服务器如何保障网站安全无虞?
Python文件流缓冲机制_IO性能解析【教程】
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Laravel如何发送系统通知?(Notification渠道示例)
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
如何在阿里云虚拟服务器快速搭建网站?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】

