CountDownLatch实现原理

在上一篇内容中,我们介绍了什么是CountDownLatch,但是还不足以应付面试,面试的时候,经常性的会问CountDownLatch的实现原理。

那么在这里,我先普及一个观点,就是回答某项技术的实现原理时,你脑子得有自己的一套回答框架,不然会被面试官问的哑口无言的。

你是不能全按照面试官的节奏来的。同时掌握了这套回答框架,也非常有助于快速吸收和理解知识。

好,我们来模拟一下,面试官来问我问题时,然后你看我怎么回复的。

面试官:有了解过CountDownLatch的实现原理吗?

我:CountDownLatch就是薄薄的一层,底层是借助AQS(抽象队列同步器)来实现的。

就这句话就够了,剩下的就是看面试官会不会继续追问,不追问,这道题就过了。

也即是:先从更高维度的视角去回答问题先。

但是为了说出上面这句话,我的确是去看了CountDownLatch的源代码了,只是我会用「从细到粗」的方式去看去梳理的,最终一定是浓缩出,一句话,几句话这样的。

不然,你就不算理解了。且一直陷入在细节中,面试时回答问题时,又经常想不起来。这个是很正常的,太细节的东西,不太容易被很好的引用出来。

如果是一两句话的,那就简单许多了,容易记忆,也非常有利于去做复习。

再加上很多面试官水平也一般,他自己也不知道或者想不起细节,因此一般高维度的回答,就过关了。

那如果遇到了一个有点料的面试官,他继续追问:那CountDownLatch内部具体是如何使用AQS的?

我:就覆写AQS的两个方法就可以了,一个是为了线程安全的减1,一个是为了唤醒线程。

到了这里后,你就可以稍微讲一下细节,比如是使用无锁编程CAS去减一的,避免脏数据。而当减到0的时候,唤醒线程。

剩下的都是AQS本身自己的实现了。

这就是全部的答案,再深入下去,则是AQS本身的原理问题了。

你也可以采用我上面的方法去理解AQS,提炼出关键句,关键词。

感谢你的阅读,希望这个方法对你有用。

相关推荐
2301_780789663 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设4 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
滴滴答答哒4 小时前
ASP.NET Core + FaceRecognitionDotNet 人脸识别实战:DI 单例、特征向量持久化与 1:N 比对
后端·asp.net
步行cgn4 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川4 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵4 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
小贺儿开发4 小时前
《流光绘忆》Unity 沉浸式光影互动
科技·unity·ai·程序员·工具·互动·光影
秋天的怀念_David5 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1005 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin6 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php