通信工具类CountDownLatch和CyclicBarrier
| 类 | 作用 |
|---|---|
| Semaphore | 限制线程数量 |
| Exchanger | 两个线程交换数据 |
| CountDownLatch | 递减屏障,线程等待直到计数器减为0时开始工作 |
| CyclicBarrier | 循环屏障,等屏障的线程数达到初始化值时,执行自定义的任务 |
| Phaser | 增强的CyclicBarrier |
CountDownLatch和CyclicBarrier区别
CountDownLatch:递减屏障,调用构造方法时指定初始值count,这个初始值其实是内部同步器Sync的父类AQS维护的一个private volatile int state类型的共享变量,这个变量在使用CountDownLatch的多个线程间共享,且volatile关键字保证了该变量修改可见性,它只能设置一次,调用await()方法的线程需要闭锁等待初始值减少到0时(调用countDown()方法递减state变量值),才可以继续执行。
CyclicBarrier:循环屏障,调用构造方法时指定初始值parties和自定义任务,初始值设置后,可以通过reset()方法重置为初始值,当循环屏障中的线程数等于parties(实际上是调用await()方法递减,直到初始值为0)时,触发自定义任务执行,本质上基于Lock + Condition实现的等待/通知模式实现。
本文来自博客园,作者:云哲,转载请注明原文链接:https://www.cnblogs.com/yyz0225/p/18006462

浙公网安备 33010602011771号