CyclicBarrier
什么是CyclicBarrier
同步屏障,允许一组线程互相等待以到达一个公共的障碍点。当设定的线程数到达屏障时,阻塞的线程继续执行。
构造方法
- CyclicBarrier(int parties),parties设定的阻碍线程数。
- CyclicBarrier(int parties, Runnable barrierAction),barrierAction任务,设定的线程数都到达屏障时,才会执行。
模拟场景
景区游览车,一次坐满20人就发车,公司团建共去了100人。
public class TestCyclicBarrier {
public static void main(String[] args) {
CyclicBarrier barrier = new CyclicBarrier(20, new Runnable() {
@Override
public void run() {
System.out.println("满人,发车");
}
});
for(int i=0; i<100; i++) {
new Thread(()->{
try {
barrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}).start();
}
}
}