可循环使用的屏障。它要做的事是让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。
CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞。
package zhao.thread;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/*** @Author zjl* @Date 2018/10/17 19:16*/public class CyclicBarrierTest {static CyclicBarrier cyclicBarrier = new CyclicBarrier(2);public static void main(String[] args) throws BrokenBarrierException, InterruptedException {new Thread(() -> {try {cyclicBarrier.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}System.out.println(1);}).start();cyclicBarrier.await();System.out.println(2);}}
