通信工具类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实现的等待/通知模式实现。

posted @   云哲  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示