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

java CyclicBarrier

‌CyclicBarrier‌是一种在多线程编程中使用的同步机制,协调多个线程之间的执行。CyclicBarrier的字面意思是“循环屏障”,意味着当所有线程都到达这个屏障时,它们会一起继续执行。

代码:

static void testCyclicBarrier() {AtomicInteger phase = new AtomicInteger(0);String[] people = {"黄老邪", "欧阳锋", "洪七公", "段智兴", "老顽童", "王重阳"};// CyclicBarrier用于协调多个线程之间的执行。CyclicBarrier的字面意思是“循环屏障”// ,意味着当所有线程都到达这个屏障时,它们会一起继续执行。CyclicBarrier barrier = new CyclicBarrier(people.length, () -> {if (phase.addAndGet(1) == 1) {System.out.println("所有大侠在大理皇宫集合完毕,泡妞后继续出发去华山");} else if (phase.get() == 2) {System.out.println("所有大侠集合在华山集合完毕,开始比武");}});for (int i = 0; i < people.length; i++) {int finalI = i;new Thread(new Runnable() {@Overridepublic void run() {// 第一阶段:独立行进到集合点大理皇宫try {Thread.sleep((int)(Math.random() * 1000));} catch (InterruptedException e) {}System.out.println(people[finalI] + " 到达集合点大理皇宫");try {barrier.await(); // 等待所有线程到达A点} catch (InterruptedException e) {} catch (BrokenBarrierException e) {}// 第二阶段:独立行进到集合点华山(重用同一屏障)try {Thread.sleep((int)(Math.random() * 1000));} catch (InterruptedException e) {}System.out.println(people[finalI] + " 到达集合点华山");try {barrier.await();} catch (InterruptedException e) {} catch (BrokenBarrierException e) {}}}).start();}}

打印:

ok 。

另外, java的并发工具类还有CountDownLatch‌ 、Semaphore‌。CountDownLatch‌为计数器闭锁,等待多个任务完成(如主线程等待子任务全部结束)。Semaphore‌为信号量,控制同时访问资源的线程数量(如限流场景),当信号量设置为1时可以代替同步锁。 代码略

http://www.xdnf.cn/news/319411.html

相关文章:

  • PDF解析新范式:Free2AI工具实测
  • Pdf转Word案例(java)
  • 【笔记】当个自由的书籍收集者从canvas得到png转pdf
  • Docker编排工具---Compose的概述及使用
  • SSA-CNN+NSGAII+熵权TOPSIS,附相关气泡图!
  • 面试高频算法:最长回文子串
  • Webug4.0靶场通关笔记19- 第24关邮箱轰炸
  • 《Python星球日记》 第42天:综合练习与数学建模
  • MVCC机制
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】7.3 动态报表生成(Jupyter Notebook/ReportLab)
  • 面试题 03.06 动物收容所
  • 如何高效实现「LeetCode25. K 个一组翻转链表」?Java 详细解决方案
  • SENSE2020BSI sCMOS科学级相机主要参数及应用场景
  • Azure OpenAI 聊天功能全解析:Java 开发者指南
  • 本地部署 MySQL + Qwen3-1.5B + Flask + Dify 工作流
  • 滑动窗口——长度最小子数组
  • var、let、const的区别
  • 高并发内存池(一):项目简介+定长内存池的实现
  • ACE-Step - 20秒生成4分钟完整歌曲,音乐界的Stable Diffusion,支持50系显卡 本地一键整合包下载
  • MySQL 8.0 OCP(1Z0-908)英文题库(1-10)
  • PyTorch常用命令(可快速上手PyTorch的核心功能,涵盖从数据预处理到模型训练的全流程)
  • 【RabbitMQ可靠性原理】
  • 亚远景-ASPICE vs ISO 21434:汽车软件开发标准的深度对比
  • YOLOv8的Python基础--函数篇2
  • WordPress:Locoy.php火车头采集
  • 【HTTP】《HTTP 全原理解析:从请求到响应的奇妙之旅》
  • 【MongoDB篇】MongoDB的副本集操作!
  • 数据清洗-电商双11美妆数据分析(二)
  • 5G赋能农业物联网:智能化种植的新纪元
  • JavaWeb:MySQL进阶