官网解释:
- 允许一组线程全部等待彼此达到共同屏障点的同步辅助。循环阻塞在涉及固定大小的线程方的程序中很有用,这些线程必须偶尔等待彼此。屏障被称为循环 ,因为它可以在等待的线程被释放之后重新使用。
意思就是每个线程都得执行到等待点进行等待,直到所有线程都执行到等待点,才会继续往下执行。
用法:(以王者荣耀组队五黑举例)
CyclicBarrier cyclicBarrier = new CyclicBarrier(5, () -> {
System.err.println("开始....");
});
for (int i = 1; i <= 20; i++) {
int i1 = RandomUtil.randomInt(500, 1000);
ThreadUtil.sleep(i1);
new Thread(() -> {
try {
System.out.println("准备...");
cyclicBarrier.await();
System.out.println("进入游戏.." + Thread.currentThread().getName());
} catch (Exception e) {
}
}).start();
}
运行结果: