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

CyclicBarrier

它会使一组线程互相等待,直到全部都到达某个屏障点,然后这些线程再同时继续执行

核心方法

  • CyclicBarrier(int parties) 创建一个栅栏,指定参与线程数

  • CyclicBarrier(int parties, Runnable barrierAction) 所有线程到达屏障点后,会先执行 barrierAction

  • await() 表示当前线程已到达屏障点,等待其他线程到达

  • reset() 重置屏障,恢复初始状态

  • getNumberWaiting() 返回当前有多少线程在等待

  • isBroken() 判断屏障是否已被破坏

示例,所有线程准备好后一起执行

int count = 10;
CyclicBarrier cyclicBarrier = new CyclicBarrier(count, () -> {System.out.println("all ready");
});
for (int i = 0; i < count; i++) {new Thread(() -> {try {System.out.println(Thread.currentThread().getName() + " arrive barrier");cyclicBarrier.await();System.out.println(Thread.currentThread().getName() + " start");} catch (InterruptedException e) {
​} catch (BrokenBarrierException e) {
​}}, "thread-" + i).start();;
}

可以看到,所有线程都到达 cyclicBarrier.await() 之后才会执行。

接下来看一下 CountDownLatchCyclicBarrier 的对比

对比项CountDownLatchCyclicBarrier
主要功能一个或多个线程等待其他线程完成任务后再继续一组线程相互等待,直到所有线程都到达某个屏障点
计数器行为计数递减到 0 后触发,一次性使用计数递增(到达数),到达阈值后自动重置,可重复使用
等待方式通常是主线程调用 await() 等待子线程 countDown()所有工作线程都调用 await(),相互等待
是否可重用不可重用(一次倒计时后失效)可循环使用(cyclic)
触发时机当计数归零时,唤醒所有等待的线程当所有线程都到达屏障点时,统一唤醒
可选动作可设置 barrierAction(触发时执行一次)
底层实现基于 AQS(AbstractQueuedSynchronizer)基于 ReentrantLock + Condition
异常机制无需重置,直接废弃若其中一个线程中断或超时,会导致 BrokenBarrierException
http://www.dtcms.com/a/516796.html

相关文章:

  • 有哪个网站做正品港货网站建设中常见的问题
  • 【GD32】输出时钟配置
  • 昆明网站建设系统有哪些心理服务网站建设内容
  • 企业网站开发需求文档百度广告怎么投放多少钱
  • 官网站内优化怎么做深圳网站建设燦
  • wordpress本地备份网站首页排名seo搜索优化
  • 全星质量管理 QMS:构建高科技制造业数字化质量生态,筑牢全链路管控
  • Python 应用上架 Microsoft Store 完整指南(2025)
  • 免费低代码平台怎么选?斑斑低代码与云表低代码深度测评!
  • 大型网站开发框架有哪些wordpress选项下拉菜单
  • App 使用 HTTPS 的工程化实战,从接入到真机排查的一线指南
  • JDK 21 API增强详解
  • 化妆品可做的团购网站有哪些有个能写文章做任务的网站
  • 【JVM】详解 类加载器与类加载过程
  • 织梦移动网站模板免费下载佛山国内快速建站
  • 九九乘法表(C语言)
  • AI赋能:下一代海外社媒推广的智能化路径
  • i2c 时序解析
  • 基于线程池的配电房图像检测
  • 天河网站+建设信科网络龙口网页设计
  • 企业官网网站建设咨询手机网站模板下载免费
  • 线性代数直觉(三):特征值(eigenvalue)与特征向量(eigenvector)为何物?
  • 学生个人网站建设模板郑州开发软件公司
  • [Agent可视化] 智能体核心(Rust) | WASI沙箱 | `grpc_server.rs`
  • 东莞网站建设方案托管桂林做网站的公司有哪些
  • 所有搜索引擎蜘蛛不来网站了最新军事报道
  • Java | Lombok @Builder.Default 排障指南:为什么 build 时默认值丢失?
  • 东莞网站快速优化排名中国品牌网站建设
  • 计算机网络 网站代理公司注册新公司的费用
  • Linux下的TCP滑动窗口