CyclicBarrier barrier = new CyclicBarrier(8);
- CyclicBarrier 可以理解为我们田径比赛的起跑线,它定义了8个跑道
- 要求必须8个跑道都有人了才能跑
- 假如来了7人,那么7人都得在起跑线这里等着,等到凑够8人才能你跑
- 假如来了9人,那么从这9人中选出8人去跑,留下一人继续等到再凑够8人再一起跑
- 这就是CyclicBarrier的作用,它调用await()方法是起跑线规则生效
- await():阻塞当前线程,并监视被阻塞线程的数量,达到要求数量之后统一放行
- 场景:我们现在要集合一个10小分队去打仗,要求所有人都到达集合点后一起出发
// 行军线程
public class ThreadMarch implements Runnable{
// 姓名
private String name;
// 可以理解为集合地点
private CyclicBarrier barrier;
public ThreadMarch(String name, CyclicBarrier barrier) {
this.name = name;
this.barrier = barrier;
}
@Override
public void run()