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

小哈学Java

共 1308字,需浏览 3分钟

 ·

2021-10-29 23:26

点击关注公众号,Java干货及时送达👇


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

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

官方解释:

图片

翻译:

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

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

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

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

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

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

抽象图:

图片

每位乘客(线程)上车后,可用座位减1,直到为0,老司机就开始发车了。

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

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

抽象图:

图片

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

我这里只是为了促进大家更好的理解它们的应用场景,详细用法可以自行搜索。

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

版权声明:本文为CSDN博主「pony-zi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

1. 别人家的公司的 1024 程序员节 ! 羡慕了!

2. 20 个最常用的 Git 命令,你都会用吗?

3. MySQL这样写UPDATE语句,劝退

4. 扔掉 Postman ?ApiPost可以大大提高联调效率?

最近面试BAT,整理一份面试资料Java面试BATJ通关手册,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报