当多个任务,都需要到达特定的步骤之后,所有任务才都继续下去。那么我们需要的就是CayclicBarrier。
demo:
public static void main(String[] args) {
final CyclicBarrier cyclicBarrier = new CyclicBarrier(5);
for (int i = 0; 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().的地方的时候,大家才会继续执行下面的代码。