CyclicBarrier:

适合的业务场景,比如

1)、,现有一大任务,需要得到全年的统计数据的,这个工作量是巨大的,那么可以将其分割为12个月的子任务,各个子任务相互独立,当所有子任务完成了,则就可以进行全年统计了,这样大大提升了统计效率。

2)、大家一起去郊游,由于大家住的地方比较分散,故需要一个集合点之后一起出发,这样大家才能玩得开心嘛。

。。。。等等

就是当有一个大任务时,需要分配多个子任务去执行,只有当所有的子任务都执行完成后,才能执行主任务。

//阻塞等待
public int await()

CountDownLatch:

适合的业务场景,比如

1)、运动会中赛跑项目,之后所有的赛跑运动员准备好了,此时裁判才能宣布该赛跑项目正式开始,裁判才能打出发信枪;当参与此次赛跑项目的所有的运动员都跑完了,此次赛跑项目才能算结束,才能统计出比赛名次。

。。。。等等

就是所有的准备好了,才能开始;或者是所有的都结束了,才能算结束。

//阻塞等待,直到计数器清零
public void await() //阻塞等待,直到等待到最长时间,当等待时间超过设置时间时,计数器还没有清零,则返回false,否则返回true
public boolean await(long timeout, TimeUnit unit) //计数器减一,当计数器清零时,await的线程会被唤醒,线程继续执行
public void countDown() //获取当前计数器的大小
public long getCount()

Semaphore:

适合的业务场景,比如

1)、当有10个人去上茅厕,但是只有5个坑,即只能同时5个人使用,只有当一个人不使用坑了,另一个人才能使用该空闲的坑,一直维持着只能同时5个人使用。

2)、当停车场来了100辆车时,但是只有30个停车位,即只能同时提供30个车辆停放,只有当一辆车开走了,另一辆车才能进入该空闲的停车位,一直维持着只能同时提供30个停车位。

。。。。等等

就是同时只能提供有限的,走一个才能进一个。

//申请获取许可,当没有剩余的许可时,则被阻塞
public void acquire() //释放一个许可
public void release()

总结:

 CountDownLatch是等待一组线程执行完毕后才能继续执行

 CyclicBarrier是能让一组线程达到一个同步点时被阻塞,直到最后一个线程达到,阻塞才会消失,其是可以循环使用的

 Semaphore是只允许一定数量的线程同时执行

最新文章

  1. [LeetCode] Longest Substring Without Repeating Characters 最长无重复子串
  2. 第三篇:Retrofit SDK的设计思路
  3. Android在一个Activity中关闭另一个Activity
  4. JavaWeb学习总结_Servlet开发
  5. Autofac 的构造函数注入方式
  6. Python全栈--7模块--random os sys time datetime hashlib pickle json requests xml
  7. 利用 word2vec 训练的字向量进行中文分词
  8. Combination Sum 和Combination Sum II
  9. Android Activity界面切换添加动画特效
  10. vb6-很简单的配置密码验证提示
  11. 各种好用的工具之一 ---- PNGGauntlet
  12. codevs 4163 hzwer与逆序对
  13. PHP - 接口&抽象类
  14. javascript——ajax应用
  15. Spring中的接口BeanFactory和FactoryBean的学习
  16. 四、latex字体字号设置
  17. 000 Python的运行
  18. SpringMVC在使用Jackson2时关于日期类型格式化的问题
  19. Local policy - User rights assignment 对照表
  20. 延迟加载-association来实现

热门文章

  1. Linux下Nginx的安装与配置
  2. Memcached 在windows环境下安装
  3. 3-附1 ->和*的区别
  4. homework-03 扑街。。
  5. 水王ID
  6. jQuery 效果 - slideDown() 方法[菜单导航栏常用]
  7. MVC5 + EF6 入门完整教程 (1)
  8. 【转载】Oracle实例和Oracle数据库(Oracle体系结构)
  9. SQL 语法 Join与Union
  10. 【BZOJ】【2756】【SCOI2012】奇怪的游戏