上一篇:1024程序员节,别人家的公司真香!羡慕ing~

相信每个想深入了解多线程开发的Java开发者都会遇到CountDownLatchCyclicBarrier,大家也在网上看到各种介绍原理,代码的,以及他们区别(应付面试)的,但是很少能讲清楚:他们到底有啥作用,怎么用,应用那些场景?为什么面试总会遇到?

本文结合场景为大家加深理解。

官方解释:

翻译:

CountDownLatch是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完成操作,再继续执行。

CyclicBarrier是一个同步的辅助类,允许一组线程相互之间等待,达到一个共同点,再继续执行。

他们都是:Synchronization  aid,我把它翻译成同步辅助器,既然是辅助工具,怎么使用啊?哪些场景使用啊?

个人理解:CountDownLatch:我把他理解成倒计时锁

场景还原: 一年级期末考试要开始了,监考老师发下去试卷,然后坐在讲台旁边玩着手机等待着学生答题,有的学生提前交了试卷,并约起打球了,等到最后一个学生交卷了,老师开始整理试卷,贴封条,下班,陪老婆孩子去了。

补充场景: 我们在玩LOL英雄联盟时会出现十个人不同加载状态,但是最后一个人由于各种原因始终加载不了100%,于是游戏系统自动等待所有玩家的状态都准备好,才展现游戏画面。

抽象图:

每位乘客(线程)上车后,可用座位减1,直到为0,老司机就开始发车了。另外,多线程系列面试题和答案全部整理好了,微信搜索互联网架构师,在后台发送:2T,可以在线阅读。

个人理解:CyclicBarrier:可看成是个障碍,所有的线程必须到齐后才能一起通过这个障碍

场景还原: 以前公司组织户外拓展活动,帮助团队建设,其中最重要一个项目就是全体员工(包括女同事,BOSS)在完成其他项目时,到达一个高达四米的高墙没有任何抓点,要求所有人,一个不能少的越过高墙,才能继续进行其他项目。

抽象图:

解放军完美配合,一个都不能少,继续完成任务。

我这里只是为了促进大家更好的理解它们的应用场景,详细用法可以自行搜索。另外,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 多线程系列面试题和答案,非常齐全。

原文链接:https://blog.csdn.net/zzg1229059735/article/details/61191679

感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。

· END ·

最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。

正文结束

推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.IntelliJ IDEA 2019.3 首个最新访问版本发布,新特性抢先看

7.这封“领导痛批95后下属”的邮件,句句扎心!

8.15张图看懂瞎忙和高效的区别!

面试官:CountDownLatch 与 CyclicBarrier 的使用场景?有什么区别?相关推荐

  1. 面试官:元素排序Comparable和Comparator有什么区别?

    作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 本文已收录<Java常见面试题>系列,Git开源地址:htt ...

  2. 面试官:spring boot和spring究竟有啥区别?

    面试官:spring boot和spring究竟有啥区别? 前言 今天本篇文章主要聚焦说说,spring boot和spring究竟有啥区别,重点对比MVC模块以及Security模块在两大框架使用时 ...

  3. 个人经验分享 | 在面试官眼中:PDF版简历和个人主页的区别

    作为一个程序员来说,简历可谓是面试的时候一个加分砝码,往往有的面试者只在意自己的技术,其实这是非常不对的. 简历对于一个面试者来说非常重要,他是第一个入口,也是面试官认识你的第一个途径.不管是对于刚毕 ...

  4. 面试官:Vue中组件和插件有什么区别?

    一.组件是什么 回顾一下对组件的定义: 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个.vue文件都可以视为一个组件 组件的优势 降低整个系统的耦合度 ...

  5. 阿里面试官常问问题,TCP和UDP的区别,你真的弄懂了吗?

    作为一个软件测试,我们都知道一些常用的网络协议是必须被我们理解和掌握的.面试的时候,面试官也喜欢问一些协议相关的问题,包括TCP和UDP这两个协议,出现的频率很高,因为都很基础.因为两种协议都在传输层 ...

  6. 【运维面试】面试官: jar包和war包有什么区别?

    前言 做java开发的jar包和war包接触的比较多,做运维的也会接触到,运维的这个问题一般是问: 开发人员给你的包是jar包还是war包. 因为培训机构的小伙伴没有接触过java,所以分不清jar和 ...

  7. 好不容易说明白AQS,面试官却还要我说应用场景,我只好又讲了CountDownLatch ~~~

    文章目录 前言 CountdownLatch源码讲解 CountDownLatch构造函数 countDown()图示.源码讲解 await()图示.源码讲解 总结 CSDN独家福利降临!!! 最后 ...

  8. 面试官:Spring事务失效的场景有哪些?如何解决?

     作者:溪~源 blog.csdn.net/xuan_lu/article/details/107797505 实际项目开发中,如果涉及到多张表操作时,为了保证业务数据的一致性,大家一般都会采用事务机 ...

  9. 面试官:策略模式和代理模式有什么区别?

    大家好,我是田哥,昨天一哥们面试被问到代理模式,刚好,我也正在写<MyBatis源码分析:小白系列>专栏中的代理模式. 这里也说明一下,本文是MyBatis源码分析专栏中的一篇文章. 感兴 ...

  10. 面试官:final、finally、finalize 有什么区别?

    作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 重要说明:本篇为博主<面试题精选-基础篇>系列中的一篇,查看 ...

最新文章

  1. springcloud13---zuul
  2. NeurIPS 2020 | 利用像素级别循环一致性解决领域自适应语义分割问题
  3. NYOJ_269_VF
  4. 买房贷款时为什么银行让客户选等额本息,这是不是个坑?
  5. Netstars CTO陈斌:架构师的成长之路
  6. 中移M5311-NBIOT-低功耗OPENCPU开发-MQTT
  7. linux mariadb忘记密码,忘记MySQL/MariaDB root密码的解决方法
  8. mooc java_中国大学moocJava程序设计答案大全
  9. GDB 调试命令讲解-转
  10. QT使用VLD检测内存泄漏
  11. AI入门,从每个人都应该学的AI第一课开始
  12. 特性Attibute定义和使用
  13. Aloha:一个分布式任务调度框架
  14. Linux编译安装PHP Mysql Nginx
  15. 内存瓶颈和计算负载问题一举突破?韩松团队提出MUCNetV2:解锁MCU端新纪录!...
  16. ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)
  17. 如何找到QQ互联开发者认证在哪?
  18. android不透明度对应的值
  19. mysql 身份证判断性别_sql根据身份证号判断所在地域、年龄、性别
  20. Mstar的Monitor方案OSD 菜单制作(三)——添加字符串文字

热门文章

  1. iOS底层探索之Runtime(三): lookUpImpOrForward慢速查找分析
  2. Hadoop-2.0命令手册
  3. android app记录执行日志 捕获奔溃异常 ,存储日志到文件
  4. 删除同样元素(线性表)
  5. 水题 Codeforces Beta Round #70 (Div. 2) A. Haiku
  6. OpenCV学习(7) 分水岭算法(1)
  7. 51cto案例精解第一章PPT
  8. 苹果Mac必备增强型拖拽操作工具:Dropover
  9. 在 Mac 上的 Keynote 中如何先排版再选照片?
  10. 如何在Mac上自定义控制中心