理解高并发(14).到齐后才能开干_cyclicBarrier

概念
循环栅栏。工作线程必须等待其它线程都到达后才能够继续。 这就好比500米短跑比赛, 3跑道必须等到3人都到齐后才能开始赛跑。

与CountDownLatch区别
  • CountDownLatch 的使用场景更多的是侧重于主线程-从线程协调工作
而CyclicBarrier侧重的是多个从线程之间的协调工作
示例代码
5个线程都到齐后才会开始工作。
public class CyclicBarrierTest {
public static void main(String[] args) {
CyclicBarrier cb = new CyclicBarrier(5, new Runnable(){
public void run(){
System.out.println("---have---");
}
});
final Work work = new Work(cb);
for(int i=0; i<11; i++){
Thread t = new Thread(new Runnable(){
public void run(){
work.doStaff();
}
});
t.start();
}
}
static class Work{
private CyclicBarrier barrier;
public Work(CyclicBarrier c){
this.barrier = c;
}
public void doStaff(){
System.out.println(Thread.currentThread().getName() + " will waiting...");
try {
barrier.await();
} catch (Exception e) {}
System.out.println(Thread.currentThread().getName() + " do task done...");
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值