Barrier意为“障碍”
可以看看CyclicBarrier的构造方法
当线程调用CyclicBarrier对象await()方法后会被阻塞,同时计数+1,直到达到CyclicBarrier构造方法中的预定的数目,所有线程就会被唤醒。
代码实例
package Condtion;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierDemo {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(8,()->{
System.out.println("门开了");
});
for(int i=1;i<=8;i++)
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"号被堵在门边了");
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"号进门了");
},i+"").start();
}
}

本文详细介绍了Java并发工具类CyclicBarrier的原理与使用方法,通过一个具体的代码实例展示了如何利用CyclicBarrier实现线程同步,当多个线程到达屏障点后一起继续执行。在示例中,8个线程被阻塞在屏障点,直到全部到达后执行回调操作并继续执行任务。
1121

被折叠的 条评论
为什么被折叠?



