current包下CyclicBarrier的使用

当多个任务,都需要到达特定的步骤之后,所有任务才都继续下去。那么我们需要的就是CayclicBarrier。

demo:

public static void main(String[] args) {
    final CyclicBarrier cyclicBarrier = new CyclicBarrier(5);
    for (int i = 0; i < 5; i++) {
        final int sleepTime = i * 1000;
        new Thread(new Runnable() {
            public void run() {
                System.out.println(Thread.currentThread().getName() + "    开始读取数据....");
                try {
                    Thread.currentThread().sleep(sleepTime * 2);
                    cyclicBarrier.await();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (BrokenBarrierException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + "  数据读取完成......");
            }
        }).start();
    }
}

上面的demo起了5个线程,只有等到所有线程都执行到cyclicBarrier.await().的地方的时候,大家才会继续执行下面的代码。

你可能感兴趣的:(并发,Cyclicbarrier,current,java并发,juc)