面试官:CountDownLatch 与 CyclicBarrier 的使用场景?有什么区别?
共 1192字,需浏览 3分钟
·
2021-10-21 08:50
点击关注公众号,Java干货及时送达
相信每个想深入了解多线程开发的Java开发者都会遇到CountDownLatch
和CyclicBarrier
,大家也在网上看到各种介绍原理,代码的,以及他们区别(应付面试)的,但是很少能讲清楚:他们到底有啥作用,怎么用,应用那些场景?为什么面试总会遇到?
本文结合场景为大家加深理解。
官方解释:
![](https://filescdn.proginn.com/d931f5d54647772b80253bc961bb401a/f1b745ba6a9d290d1197e946da2ffaf9.webp)
翻译:
CountDownLatch是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完成操作,再继续执行。
CyclicBarrier是一个同步的辅助类,允许一组线程相互之间等待,达到一个共同点,再继续执行。
他们都是:Synchronization aid,我把它翻译成同步辅助器,既然是辅助工具,怎么使用啊?哪些场景使用啊?
个人理解:CountDownLatch:我把他理解成倒计时锁
场景还原: 一年级期末考试要开始了,监考老师发下去试卷,然后坐在讲台旁边玩着手机等待着学生答题,有的学生提前交了试卷,并约起打球了,等到最后一个学生交卷了,老师开始整理试卷,贴封条,下班,陪老婆孩子去了。
补充场景: 我们在玩LOL英雄联盟时会出现十个人不同加载状态,但是最后一个人由于各种原因始终加载不了100%,于是游戏系统自动等待所有玩家的状态都准备好,才展现游戏画面。
抽象图:
![](https://filescdn.proginn.com/58c0e6067e916d4c11f17c082ccdb01b/46e7e71d489557eaa8a38a446a800d24.webp)
每位乘客(线程)上车后,可用座位减1,直到为0,老司机就开始发车了。另外,多线程系列面试题和答案全部整理好了,微信搜索Java技术栈,在后台发送:面试,可以在线阅读。
个人理解:CyclicBarrier:可看成是个障碍,所有的线程必须到齐后才能一起通过这个障碍
抽象图:
![](https://filescdn.proginn.com/88023d0ddf0b6c056e191445aafc9872/66d92d955dca3ca08ccce7edbe2d6f4c.webp)
解放军完美配合,一个都不能少,继续完成任务。
我这里只是为了促进大家更好的理解它们的应用场景,详细用法可以自行搜索。另外,关注公众号Java技术栈,在后台回复:面试,可以获取我整理的 Java 多线程系列面试题和答案,非常齐全。
原文链接:https://blog.csdn.net/zzg1229059735/article/details/61191679
版权声明:本文为CSDN博主「pony-zi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
![](https://filescdn.proginn.com/fe1937e4005ec865d64a67d08486a1d0/3fc03b4de360ebad83f246da027a3148.webp)
![](https://filescdn.proginn.com/5c089156f17176c615c707792d939a28/ba5ce0853ff7d6e376ed1586fa880003.webp)
![](https://filescdn.proginn.com/a774e37dd0f82d8b61bf14bb8867c08e/d9df66dfb37c2bcb9d05389354214af4.webp)
![](https://filescdn.proginn.com/91ea2cbeb5ddca219e973bae5caf0588/d2545e677cda2d13d8131cbbd80e8e58.webp)
![](https://filescdn.proginn.com/0333fa35f51447e04fd72c245e39a177/3fe993cacfac0925ae94554c28478ccc.webp)
![](https://filescdn.proginn.com/81fe75951288710f20fbb3a8c9862985/6020e3915e5792d532ecb7e82f304180.webp)
关注Java技术栈看更多干货
![](https://filescdn.proginn.com/605e0717d42bd2069a90998422ccf5ca/d5aa00e7aead3eb10a0278b7b0a95736.webp)