深入理解JUC:第五章:CyclicBarrier循环栅栏
2020-05-04 18:39
459 查看
理论:
它的作用就是会让所有线程都等待完成后才会继续下一步行动。
举个例子,就像生活中我们会约朋友们到某个餐厅一起吃饭,有些朋友可能会早到,有些朋友可能会晚到,但是这个餐厅规定必须等到所有人到齐之后才会让我们进去。这里的朋友们就是各个线程,餐厅就是 CyclicBarrier。
未使用循环栅栏的代码:
[code]public class Demo { public static void main(String[] args) throws Exception{ for (int i = 1; i <= 6; i++) { final int tempInt = i; new Thread(()->{ System.out.println(tempInt+"朋友到了"); },String.valueOf(i)).start(); } System.out.println("朋友全部到了,才开始吃饭"); } }
控制台:
使用CyclicBarrier的代码:
[code]import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class Demo { public static void main(String[] args) throws Exception{ CyclicBarrier cyclicBarrier = new CyclicBarrier(6,()->{System.out.println("朋友全部到了,才开始吃饭");}); for (int i = 1; i <= 6; i++) { final int tempInt = i; new Thread(()->{ System.out.println(tempInt+"朋友到了"); try { cyclicBarrier.await(); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } },String.valueOf(i)).start(); } } }
控制台:
java小丑 原创文章 286获赞 360访问量 11万+ 关注 私信
相关文章推荐
- java高并发系列 - 第17天:JUC中的循环栅栏CyclicBarrier常见的6种使用场景及代码示例
- 深入理解 CyclicBarrier和CountDownLatch
- JDK并发包---(10)循环栅栏:CyclicBarrier
- 如何一文了解CyclicBarrier(可重复使用的栅栏阻塞-JUC)
- 多线程之循环栅栏CyclicBarrier及原理
- 循环栅栏:CyclicBarrier(司令要求任务) 读书笔记
- 同步机制之--java CyclicBarrier 循环栅栏
- Java高并发程序-Chapter3 JDK并发包(第十五讲)同步控制之CyclicBarrier 循环栅栏
- for循环深入理解
- 深入理解Spring中的循环依赖
- 深入理解闭包系列第四篇——常见的一个循环和闭包的错误详解
- 深入理解计算机系统第五章学习-性能优化 2
- 《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第五章 深入理解WifiService
- join 与 countdownlatch 的区别 扩展 栅栏 CyclicBarrier
- 两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier
- 深入理解Javascript-JS异步和事件循环
- cs app深入理解计算机系统:第五章 优化程序性能 几个优化的java实现
- 深入理解JavaScript事件循环机制
- magento 开发 -- 深入理解Magento第五章 – Magento资源配置
- 数据库性能调优技术系列文章(3)--深入理解嵌套循环执行计划