JAVA并发:CountDownLatch与CyclicBarrier实战 CountDownLatch等别人做完再继续适合场景主线程等多个任务都完成后再做汇总。import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { int taskCount 3; CountDownLatch latch new CountDownLatch(taskCount); try (ExecutorService executor Executors.newVirtualThreadPerTaskExecutor()) { for (int i 1; i taskCount; i) { int taskId i; executor.submit(() - { try { System.out.println(任务 taskId 开始执行); Thread.sleep(1000L * taskId); System.out.println(任务 taskId 执行完成); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } finally { latch.countDown(); } }); } System.out.println(主线程等待所有任务完成...); latch.await(); System.out.println(所有任务都完成了主线程继续执行); } } }核心记法latch.countDown(); // 完成一个计数减 1 latch.await(); // 等计数变成 0CyclicBarrier大家到齐再一起继续适合场景多个线程都准备好以后再同时进入下一阶段。import java.util.concurrent.CyclicBarrier; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class CyclicBarrierDemo { public static void main(String[] args) { int workerCount 3; CyclicBarrier barrier new CyclicBarrier(workerCount, () - { System.out.println(所有线程都到达栅栏开始下一阶段); }); try (ExecutorService executor Executors.newVirtualThreadPerTaskExecutor()) { for (int i 1; i workerCount; i) { int workerId i; executor.submit(() - { try { System.out.println(线程 workerId 正在准备); Thread.sleep(1000L * workerId); System.out.println(线程 workerId 到达栅栏); barrier.await(); System.out.println(线程 workerId 继续执行后续任务); } catch (Exception e) { e.printStackTrace(); } }); } } } }核心记法barrier.await(); // 到栅栏这里等直到指定数量的线程都到齐一句话区别CountDownLatch一个线程等多个线程完成。 CyclicBarrier多个线程互相等大家到齐再一起走。CountDownLatch一般是一次性的CyclicBarrier可以循环复用所以名字里有Cyclic。

相关新闻

最新新闻

Go入门:常量与iota枚举器的妙用

Go入门:常量与iota枚举器的妙用

Go入门:常量与iota枚举器的妙用大家好,我是你们的Go语言向导。前面我们花了不少篇幅学习变量——如何声明、如何初始化、零值是什么。今天我们来学习变量的"反面"——常量。在编程中,有些事情是不变的,有些值是不该变的…

2026/8/11 9:25:11
百度网盘提取码智能获取工具:3分钟告别手动搜索烦恼

百度网盘提取码智能获取工具:3分钟告别手动搜索烦恼

百度网盘提取码智能获取工具:3分钟告别手动搜索烦恼 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘加密资源而烦恼吗?当你满…

2026/8/11 9:25:11
【单片机毕设案例分享】基于 51 单片机 DS18B20 的水质温度 PH 同步检测装置 基于 STM32 单片机的水质阈值设置与智能报警系统研究(018102)

【单片机毕设案例分享】基于 51 单片机 DS18B20 的水质温度 PH 同步检测装置 基于 STM32 单片机的水质阈值设置与智能报警系统研究(018102)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于单片机,STM32单片机,51单片机,J…

2026/8/11 9:25:11
2026年8月西安装修门店AI同城拓客有哪些有效方法?

2026年8月西安装修门店AI同城拓客有哪些有效方法?

2026年8月,西安装修市场的获客逻辑正在被AI改写。越来越多的业主不再只靠熟人转介绍,而是直接问豆包、通义千问这类AI助手“西安装修公司哪家口碑好”“雁塔区靠谱的装修门店推荐”。这种搜索习惯的变化,让原本依赖竞价排名和电话名单的拓客方…

2026/8/11 9:25:11
HTTPS出站网关部署教学手册(CC Switch)

HTTPS出站网关部署教学手册(CC Switch)

基于 GOST 的 HTTPS 出站网关部署指南1. 使用范围 本文介绍如何在获得授权的服务器环境中部署一个带 TLS 加密和身份认证的 HTTP 出站网关,用于: 为企业内部应用提供统一、可审计的网络出口。对出站访问实施身份认证和来源限制。集中记录连接状态&#x…

2026/8/11 9:25:11
德扑研学社:翻前加注尺度的实战拆解与工具应用

德扑研学社:翻前加注尺度的实战拆解与工具应用

德扑研学社是轻量易上手的德州扑克训练小工具。本文聚焦翻前加注尺度,通过理论科普与工具测评内容,解析标准加注逻辑。真正的翻前加注尺度不是固定数值,而是基于位置、牌力与对手倾向的动态调整。利用德扑研学社的模拟环境,玩家可…

2026/8/11 9:20:10