# Cyclicbarrier
循环栅栏,用来进行线程协作,等待线程满足某个计数。构造时设置『计数个数』,每个线程执行到某个需要“同步的时刻调用wait0方法进行等待,当等待的线程数满足『计数个数』时,继续执行
也就是说可以重复使用
@Slf4j
public class Demo {
public static void main(String[] args) throws Exception {
CyclicBarrier cyclicbarrier = new CyclicBarrier(2);
ExecutorService executorService = Executors.newFixedThreadPool(2);
for (int i = 0; i < 3; i++) {
int finalI = i;
executorService.execute(() -> {
try {
log.info("run :{}", finalI + "");
TimeUnit.SECONDS.sleep(1);
//阻塞一直到下一个线程调用await main才会打印
//也就是成对调用才会执行到main
//现在线程是3,就会阻塞最后一个线程,知道再次调用一个await
cyclicbarrier.await();
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
log.info("end ");
}
}