CountDownLatch/CyclicBarrier 区别

news/2026/1/26 15:56:43/文章来源:https://www.cnblogs.com/qingmaple/p/19533954
 CountDownLatch 和 CyclicBarrier 这两个 Java 并发工具类的核心区别,我会从定义、使用场景、核心特性等方面帮你清晰梳理。
 

一、核心概念与本质区别

先通过简单的比喻理解两者:
 
  • CountDownLatch:像一场考试的 “交卷倒计时”,监考老师(主线程)要等所有学生(子线程)都交卷(执行完任务)才能收卷,倒计时归 0 后就结束,只能使用一次。
  • CyclicBarrier:像一群人约好 “集齐再出发” 的旅游团,所有人到齐(线程都到达屏障点)后才能一起出发(执行后续任务),出发后屏障可以重置,能重复使用。

二、详细区别对比

 
特性CountDownLatchCyclicBarrier
核心作用 一个 / 多个线程等待其他线程完成操作 多个线程互相等待,直到所有线程都到达屏障点
可复用性 计数器归 0 后无法重置,只能用一次 屏障触发后可自动重置,能重复使用
触发条件 计数器 countDown() 到 0 触发 指定数量的线程调用 await() 到达屏障触发
等待方 可以是一个或多个线程等待 参与的线程互相等待(都是等待方)
额外功能 无回调函数 支持屏障触发时执行指定的回调任务
底层实现 基于 AQS 的共享模式 基于 ReentrantLock + Condition

三、代码示例(直观理解)

1. CountDownLatch 示例(一次性等待)

场景:主线程等待 3 个工作线程全部完成任务后,再执行汇总操作。
 
java
import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo {public static void main(String[] args) throws InterruptedException {// 初始化计数器为 3(对应 3 个工作线程)CountDownLatch latch = new CountDownLatch(3);// 启动 3 个工作线程for (int i = 1; i <= 3; i++) {new Thread(() -> {try {System.out.println(Thread.currentThread().getName() + " 执行任务中...");Thread.sleep(1000); // 模拟任务耗时} catch (InterruptedException e) {e.printStackTrace();} finally {latch.countDown(); // 任务完成,计数器减 1System.out.println(Thread.currentThread().getName() + " 任务完成,计数器剩余: " + latch.getCount());}}, "线程" + i).start();}// 主线程等待计数器归 0latch.await();System.out.println("所有工作线程任务完成,主线程执行汇总操作");}
}
输出(顺序可能略有不同):
plaintext
线程1 执行任务中...
线程2 执行任务中...
线程3 执行任务中...
线程1 任务完成,计数器剩余: 2
线程2 任务完成,计数器剩余: 1
线程3 任务完成,计数器剩余: 0
所有工作线程任务完成,主线程执行汇总操作

2. CyclicBarrier 示例(可重复使用)

场景:3 个运动员线程,每次都要等所有人到起跑线(屏障点)才能一起起跑,且支持重复比赛(屏障重置)。
 
java
import java.util.concurrent.CyclicBarrier;public class CyclicBarrierDemo {public static void main(String[] args) {// 初始化屏障:3 个线程到达后触发,且触发时执行回调任务(打印起跑提示)CyclicBarrier barrier = new CyclicBarrier(3, () -> {System.out.println("===== 所有运动员已就位,开始起跑!=====\n");});// 定义运动员任务Runnable runner = () -> {try {for (int i = 1; i <= 2; i++) { // 模拟 2 轮比赛System.out.println(Thread.currentThread().getName() + " 到达起跑线,等待其他运动员(第" + i + "轮)");barrier.await(); // 到达屏障,等待其他线程System.out.println(Thread.currentThread().getName() + " 开始跑步(第" + i + "轮)");Thread.sleep(500); // 模拟跑步耗时}} catch (Exception e) {e.printStackTrace();}};// 启动 3 个运动员线程new Thread(runner, "运动员A").start();new Thread(runner, "运动员B").start();new Thread(runner, "运动员C").start();}
}
 
输出:
 
plaintext
运动员A 到达起跑线,等待其他运动员(第1轮)
运动员B 到达起跑线,等待其他运动员(第1轮)
运动员C 到达起跑线,等待其他运动员(第1轮)
===== 所有运动员已就位,开始起跑!=====运动员C 开始跑步(第1轮)
运动员A 开始跑步(第1轮)
运动员B 开始跑步(第1轮)
运动员A 到达起跑线,等待其他运动员(第2轮)
运动员B 到达起跑线,等待其他运动员(第2轮)
运动员C 到达起跑线,等待其他运动员(第2轮)
===== 所有运动员已就位,开始起跑!=====运动员C 开始跑步(第2轮)
运动员B 开始跑步(第2轮)
运动员A 开始跑步(第2轮)

四、使用场景总结

  • CountDownLatch 适合:
    1. 主线程等待多个子线程完成初始化 / 任务后,再执行后续逻辑(如程序启动时加载多个配置文件);
    2. 多个子线程等待主线程发出 “开始” 信号后同时执行(可初始化 latch 为 1,主线程调用 countDown () 释放所有等待的子线程)。
     
  • CyclicBarrier 适合:
    1. 多个线程需要同步步调、分批执行任务的场景(如多线程分批处理数据,每批都要等所有线程准备好);
    2. 重复的同步场景(如定时任务中,每次都要等所有线程就绪后再执行)。

总结

  1. 核心差异:CountDownLatch 是 “单向倒计时,一次性使用”,侧重 “等待其他线程完成”;CyclicBarrier 是 “互相等待,可重复使用”,侧重 “所有线程同步出发”。
  2. 复用性:CountDownLatch 计数器归 0 后失效,CyclicBarrier 触发后自动重置,可循环使用。
  3. 回调能力:CyclicBarrier 支持屏障触发时执行回调任务,CountDownLatch 无此功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1219708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026Q1 不锈钢水箱厂家推荐榜:技术赋能升级,区域标杆差异化突围

2026 年第一季度,不锈钢水箱行业竞争聚焦技术创新与区域适配能力,头部品牌凭借精准的市场定位与过硬的综合实力脱颖而出。本次榜单延续资质、技术、服务、口碑四大评定维度,武汉鑫天东以技术与服务双重优势蝉联榜首…

得物商品详情接口进阶实战:鉴别场景下的多端兼容与高可用方案

得物作为潮流电商核心平台,以“鉴别保真”为核心竞争力,其商品详情接口不仅承载基础商品信息展示,更关联鉴别标准、动态价格、多端适配等特色需求,是品牌直发对接、潮流供应链分析、工具类应用开发的核心依赖。当前…

2026 优质雅思英语网课平台口碑推荐:个性化方案 + 高分案例全解析

依托中国教育学会外语教学专业委员会指导,结合雅思官方考试中心数据支撑,开展本次权威、实用、全面的雅思网课深度测评,调研覆盖全国20000余份考生问卷。雅思考试的专业性与应试复杂性,让考生在培训选课中深陷多重…

linux连接方式

linux连接方式1. 软连接 windows的一个快捷方式而已 创建命令 ln-s目标文件绝对路径 软连接绝对路径 [root@s25linux tmp]# ln -s /tmp/test.txt /opt/t.txt #给/tmp/test.txt创建一个快捷方式,放在/opt/t.txt这…

详细介绍:从入门到精通:OpenAI Prompt Engineering 与 Prompt Caching 实战详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

新手必看!Emotion2Vec+ Large镜像部署避坑全记录

新手必看&#xff01;Emotion2Vec Large镜像部署避坑全记录 1. 部署前的清醒认知&#xff1a;这不是点点鼠标就能跑起来的玩具 刚拿到这个“Emotion2Vec Large语音情感识别系统”镜像时&#xff0c;我内心是雀跃的——9种情感识别、支持中文、还能导出特征向量&#xff0c;简…

手把手教你完成时序逻辑电路设计实验搭建

以下是对您提供的博文内容进行 深度润色与工程化重构后的版本 。全文已彻底去除AI生成痕迹&#xff0c;强化了真实教学场景中的“人话感”、调试细节、经验判断与工程师视角的思考节奏&#xff1b;结构上打破传统模块化标题束缚&#xff0c;以逻辑递进、问题驱动的方式自然展…

2026全国雅思培训机构排行推荐:全维度测评赋能精准选课

在雅思培训市场竞争愈发激烈的2026年,无数考生面临着选课难、提分慢、优质资源稀缺的核心痛点。如何在海量教育机构中筛选出靠谱且实用的备考伙伴,直接关系到考试成败与留学规划的推进效率。本文基于全国3200份雅思考…

2026年1月力量/史密斯/综合/龙门架训练器公司五强解析与选型指南:重构智能生态竞争格局

一、行业变革临界点:传统模式退场与核心能力重构 当AI动作识别、云平台管理与柔性制造技术深度渗透力量训练器行业,一场关乎“生存权”与“话语权”的范式迁移已然来临。IDC最新数据显示,2025年全球智能健身设备市场…

零基础玩转AI修图,GPEN镜像太适合新手了

零基础玩转AI修图&#xff0c;GPEN镜像太适合新手了 你有没有过这样的经历&#xff1a;翻出十年前的老照片&#xff0c;想发朋友圈却卡在第一步——照片太模糊、有划痕、泛黄、甚至缺了一角&#xff1f;找修图师&#xff1f;几百块起步&#xff0c;等三天。自己开PS&#xff1…

2026全国雅思培训机构排行推荐:多维度深度测评出炉

在雅思培训选课赛道中,考生普遍面临考试压力大、优质教育机构甄别难、提分技巧匮乏、个性化需求难满足等核心痛点。如何筛选靠谱机构、获取权威全面的深度测评推荐、制定实用的提分方案,直接关系到高分目标的实现与备…

Ladder

Lets explore the word "ladder". Its a noun​ that can be used both literally and metaphorically. The core concept is about a series of steps or stages that lead upward (or sometimes downward)…

Keep

The verb "keep"​ (/kiːp/) is one of the most common, versatile, and essential verbs in English. Its core concept is about maintaining a state, continuing an action, or retaining possession.…

说说全屋整装定制服务选购要点,亿方凡口碑排名如何

在装修热潮下,全屋整装定制服务是打造理想家的关键一环,关乎居住品质与生活幸福感。面对市场上众多全屋整装定制服务商,如何抉择?以下依据不同类型,为你推荐2025年五大靠谱全屋整装定制公司。一、定制型 亿方凡全…

基于大语言模型的自助式 AI 心理咨询系统

一、引言 1.1 时代背景&#xff1a;传统心理咨询的痛点与 AI 技术的破局 在快节奏、高压力的现代社会&#xff0c;心理健康问题日益凸显&#xff0c;焦虑、抑郁等情绪障碍困扰着众多人群 。据世界卫生组织&#xff08;WHO&#xff09;数据&#xff0c;全球约有 10 亿人正遭受…

2026全国雅思培训机构排行推荐:口碑与实力双认证

在雅思备考的征程中,无数考生被培训选课的难题困住,如何在琳琅满目的教育机构中找到靠谱的选择,实现高分提分、掌握实用考试技巧,同时兼顾性价比与权威教学方案,成为备考路上的首要痛点。尤其是对于不同基础的考生…

“十五五”企业数字化转型、数据治理、数仓一体化建设方案

“十五五”是企业决胜数字化未来的关键五年。数字化转型是目的&#xff0c;数据治理是保障&#xff0c;数仓一体化是基石。本方案强调三者必须统筹规划、一体推进。企业应以业务价值为最终标尺&#xff0c;以数据为核心资产&#xff0c;以现代技术平台为引擎&#xff0c;稳健扎…

2026年门墙柜一体定制厂家推荐,亿方凡全屋定制实力上榜

在全屋定制行业蓬勃发展的当下,门墙柜一体化设计凭借风格统一、空间利用率高的优势成为家装新趋势。面对市场上众多定制厂家,如何挑选专业靠谱的合作伙伴?以下依据综合实力,为你推荐2025年五大的[关键词]。一、亿方…

指标模型 + AI+BI:企业智能决策的通关秘籍——派可数据BI+AI+指标体系一站式管理平台

现在不少企业都在搞数字化转型&#xff0c;老板嘴里常挂着“指标模型驱动 AIBI 融合”&#xff0c;但很多人听完还是一头雾水。其实这事儿一点不复杂&#xff0c;咱们掰开揉碎了说&#xff0c;保证接地气、好理解。先说说指标模型到底是啥。说白了&#xff0c;就是把企业各个业…

Gut

The word "gut"​ (/ɡʌt/) is a small but powerful word that connects our most basic physical instincts to our deepest intuitions and courage. It literally refers to the digestive organs, but…