

package com.example.completablefuture;
import com.example.completablefuture.common.CommonUtil;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierTest {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(3);
for (int i = 1; i <= 3; i++) {
final int i1 = i;
new Thread(() -> {
try {
CommonUtil.log("sleep" + i1 * 1000L);
Thread.sleep(i1 * 1000L);
cyclicBarrier.await(); // 每一个线程调用await,计数器的值就会加1,当计数值的值达到3,所有阻塞的线程就会执行。
CommonUtil.log("sleep" + i1 * 1000L + "后的业务");
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
}, "task_" + i).start();
}
}
}
