CountDownLatch减计数,CyclicBarrier加计数。 线程结束!!!
CountDownLatch是一次性的,CyclicBarrier可以重用。 停止阻塞 线程做其他事情!!!
等待返回结果
多线程跑任务 优化我们的报表统计
final CountDownLatch latch = new CountDownLatch(num);
分线程 latch .countDown();
主线程 latch .await(); 等待所有线程计数
如果等待的线程被中断,则会抛出InterruptedException异常。
原理AQS的同步队列 赋值给AQS队列的 state
CyclicBarrier barrier = new CyclicBarrier(5, new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getId() + ":我宣布,所有小伙伴写入数据完毕");
}
});
分线程中等待 barrier.await(); // 等待所有线程都调用过此函数才能进行后续动作