通过它可以实现让一组线程等待至某个状态之后再全部同时执行。
CyclicBarrier 中最重要的方法就是 await 方法,它有 2 个重载版本:
1. public int await() :用来挂起当前线程,直至所有线程都到达 barrier 状态再同时执行后续任务;
2. public int await(long timeout, TimeUnit unit) :让这些线程等待至一定的时间,如果还有线程没
有到达 barrier 状态就直接让到达 barrier 的线程执行后续任务。
例子:集齐七颗龙族召唤神龙
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierDemo {
private static final int Number = 7;
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(Number, () -> {
System.out.println("******集齐7颗龙珠就可以召唤神龙");
});
for (int i = 1; i <= 7; i++) {
new Thread(() -> {
try {
System.out.println(Thread.currentThread().getName() + "龙珠被收集到了");
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}, String.valueOf(i)).start();
}
}
}



