Cyclic Barrier
使用

@Test
public void test() {
int threadNum = 5;
CyclicBarrier barrier =
new CyclicBarrier(
threadNum, () -> System.out.println(Thread.currentThread().getName() + " 完成最后任务"));
for (int i = 0; i < threadNum; i++) {
int finalI = i;
new Thread(
() -> {
try {
System.out.println(finalI + " 到达栅栏 A");
barrier.await();
System.out.println(finalI + " 冲破栅栏 A");
System.out.println(finalI + " 到达栅栏 B");
barrier.await();
System.out.println(finalI + " 冲破栅栏 B");
} catch (Exception e) {
e.printStackTrace();
}
})
.start();
}
}原理

维护锁状态逻辑
重复使用
Last updated