Java并发中的CyclicBarrier

95 篇文章 3 订阅 ¥9.90 ¥99.00
CyclicBarrier是Java并发工具类,用于让一组线程等待其他线程达到某个同步点。它具备构造函数、await()方法,支持分组等待、超时等待和回调功能。与CountDownLatch不同,CyclicBarrier可以重复使用,适用于多线程间的循环同步场景。
摘要由CSDN通过智能技术生成

目录

1. 概述

2. 主要方法

2.1 构造函数

2.2 await()方法

3. 使用案例

3.1 分组等待(线程之间相互等待,再一起出发)场景

3.2 超时等待

3.3 回调,使用new CyclicBarrier(parties, Runnable)构造函数

4. CyclicBarrier和CountDownLatch的区别

5. 参考链接


1. 概述

现实生活中我们经常会遇到这样的情景,在进行某个活动前需要等待人全部都齐了才开始。例如吃饭时要等全家人都上座了才动筷子,旅游时要等全部人都到齐了才出发,比赛时要等运动员都上场后才开始。JUC提供的同步工具类CyclicBarrier可以模拟这类场景。

CyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barries),它的作用是让一组线程到达一个屏障(也成为同步点)时阻塞,直到最后一个线程到达屏障时,这组线程才会放行,才会执行下面的逻辑。其源码是 ReentrantLock 和 Condition 的组合使用

利用CyclicBarrier类可以实现一组线程相互等待,当所有线程都到达某个屏障点后再进行后续的操作。下图演示了这一过程。

CyclicBarries一组线程相互等待原理图
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值