面试官:CountDownLatch 与 CyclicBarrier 的使用场景?有什么区别?
上一篇:1024程序员节,别人家的公司真香!羡慕ing~
相信每个想深入了解多线程开发的Java开发者都会遇到CountDownLatch
和CyclicBarrier
,大家也在网上看到各种介绍原理,代码的,以及他们区别(应付面试)的,但是很少能讲清楚:他们到底有啥作用,怎么用,应用那些场景?为什么面试总会遇到?
本文结合场景为大家加深理解。
官方解释:
翻译:
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 的使用场景?有什么区别?相关推荐
- 面试官:元素排序Comparable和Comparator有什么区别?
作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 本文已收录<Java常见面试题>系列,Git开源地址:htt ...
- 面试官:spring boot和spring究竟有啥区别?
面试官:spring boot和spring究竟有啥区别? 前言 今天本篇文章主要聚焦说说,spring boot和spring究竟有啥区别,重点对比MVC模块以及Security模块在两大框架使用时 ...
- 个人经验分享 | 在面试官眼中:PDF版简历和个人主页的区别
作为一个程序员来说,简历可谓是面试的时候一个加分砝码,往往有的面试者只在意自己的技术,其实这是非常不对的. 简历对于一个面试者来说非常重要,他是第一个入口,也是面试官认识你的第一个途径.不管是对于刚毕 ...
- 面试官:Vue中组件和插件有什么区别?
一.组件是什么 回顾一下对组件的定义: 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个.vue文件都可以视为一个组件 组件的优势 降低整个系统的耦合度 ...
- 阿里面试官常问问题,TCP和UDP的区别,你真的弄懂了吗?
作为一个软件测试,我们都知道一些常用的网络协议是必须被我们理解和掌握的.面试的时候,面试官也喜欢问一些协议相关的问题,包括TCP和UDP这两个协议,出现的频率很高,因为都很基础.因为两种协议都在传输层 ...
- 【运维面试】面试官: jar包和war包有什么区别?
前言 做java开发的jar包和war包接触的比较多,做运维的也会接触到,运维的这个问题一般是问: 开发人员给你的包是jar包还是war包. 因为培训机构的小伙伴没有接触过java,所以分不清jar和 ...
- 好不容易说明白AQS,面试官却还要我说应用场景,我只好又讲了CountDownLatch ~~~
文章目录 前言 CountdownLatch源码讲解 CountDownLatch构造函数 countDown()图示.源码讲解 await()图示.源码讲解 总结 CSDN独家福利降临!!! 最后 ...
- 面试官:Spring事务失效的场景有哪些?如何解决?
作者:溪~源 blog.csdn.net/xuan_lu/article/details/107797505 实际项目开发中,如果涉及到多张表操作时,为了保证业务数据的一致性,大家一般都会采用事务机 ...
- 面试官:策略模式和代理模式有什么区别?
大家好,我是田哥,昨天一哥们面试被问到代理模式,刚好,我也正在写<MyBatis源码分析:小白系列>专栏中的代理模式. 这里也说明一下,本文是MyBatis源码分析专栏中的一篇文章. 感兴 ...
- 面试官:final、finally、finalize 有什么区别?
作者 | 磊哥 来源 | Java面试真题解析(ID:aimianshi666) 转载请联系授权(微信ID:GG_Stone) 重要说明:本篇为博主<面试题精选-基础篇>系列中的一篇,查看 ...
最新文章
- springcloud13---zuul
- NeurIPS 2020 | 利用像素级别循环一致性解决领域自适应语义分割问题
- NYOJ_269_VF
- 买房贷款时为什么银行让客户选等额本息,这是不是个坑?
- Netstars CTO陈斌:架构师的成长之路
- 中移M5311-NBIOT-低功耗OPENCPU开发-MQTT
- linux mariadb忘记密码,忘记MySQL/MariaDB root密码的解决方法
- mooc java_中国大学moocJava程序设计答案大全
- GDB 调试命令讲解-转
- QT使用VLD检测内存泄漏
- AI入门,从每个人都应该学的AI第一课开始
- 特性Attibute定义和使用
- Aloha:一个分布式任务调度框架
- Linux编译安装PHP Mysql Nginx
- 内存瓶颈和计算负载问题一举突破?韩松团队提出MUCNetV2:解锁MCU端新纪录!...
- ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)
- 如何找到QQ互联开发者认证在哪?
- android不透明度对应的值
- mysql 身份证判断性别_sql根据身份证号判断所在地域、年龄、性别
- Mstar的Monitor方案OSD 菜单制作(三)——添加字符串文字
热门文章
- iOS底层探索之Runtime(三): lookUpImpOrForward慢速查找分析
- Hadoop-2.0命令手册
- android app记录执行日志 捕获奔溃异常 ,存储日志到文件
- 删除同样元素(线性表)
- 水题 Codeforces Beta Round #70 (Div. 2) A. Haiku
- OpenCV学习(7) 分水岭算法(1)
- 51cto案例精解第一章PPT
- 苹果Mac必备增强型拖拽操作工具:Dropover
- 在 Mac 上的 Keynote 中如何先排版再选照片?
- 如何在Mac上自定义控制中心