深入了解ReentrantLock源码附带图文分析

简介: ReentrantLock源码图文分析

ReentrantLock源码

1.png

源码阅读的方法

使用debug!

使用debug!

使用debug!

重要的事情说3遍,当初读源码的时候也走了不少弯路,但是使用debug可以帮助我们从开始走到结尾,因为我们不可能一上来就通读源码的全文.

画类图,或者是在IDEA里ShowDiagram查看类图

先不要去考虑一些算法边界的+1 -1,到之后实在没明白也没事,我们主要是理解里面的设计思想以及帮助我们平时排查bug的

Lock

类图

2.png

源码执行过程分析

3.png

3.png

4.png

注意:此处不能鼠标单击,因为他是模板设计模式,真正的实现是在他的子类中,我们只需要跟随debug即可

5.png6.png

7.png

8.png9.png

unLock

源码执行过程分析

10.png11.png12.png13.png

目录
相关文章
|
5月前
|
开发者
Qt中的事件该如何学习?(附带案例)
事件是Qt中比较重要的一部分,在初期如果理解不当学习可能会比较困难,这里提一嘴当初教我的那位老师水平是真的高,让我很轻易的就理解了事件的概念。 在平时我们见到那些界面上的某些快捷键就有可能是事件做的,例如ESC关闭窗口,Enter提交或者登录这种类似的,这也是事件的强大之处。
138 0
|
7月前
如何使用Beyond Compare软件进行代码比对
如何使用Beyond Compare软件进行代码比对
209 2
|
7月前
|
安全 Java 测试技术
在线音乐播放系统的设计与实现(论文+源码)_kaic
在线音乐播放系统的设计与实现(论文+源码)_kaic
|
7月前
|
前端开发 JavaScript
使用canvas实现代码雨高级升阶版【附带源码和使用方法】
使用canvas实现代码雨高级升阶版【附带源码和使用方法】
65 0
|
数据采集 前端开发 Python
Python爬虫与逆向工程技术的结合,实现新闻网站动态内容的多线程抓取
Python爬虫与逆向工程技术的结合,实现新闻网站动态内容的多线程抓取
|
自然语言处理 开发者 索引
搜索流程详细分析|学习笔记
快速学习搜索流程详细分析
129 0
搜索流程详细分析|学习笔记
|
关系型数据库 MySQL 开发者
行锁演示答疑补充|学习笔记
快速学习行锁演示答疑补充
别走!这里有个笔记:图文讲解 AQS ,一起看看 AQS 的源码……(图文较长)(一)
AbstractQueuedSynchronizer 抽象队列同步器,简称 AQS 。是在 JUC 包下面一个非常重要的基础组件,JUC 包下面的并发锁 ReentrantLock CountDownLatch 等都是基于 AQS 实现的。所以想进一步研究锁的底层原理,非常有必要先了解 AQS 的原理。
115 0
|
API
巧妙解决微信里进行下载功能
https://juejin.cn/post/7101137101655113736 巧妙解决微信里进行下载功能
229 0
巧妙解决微信里进行下载功能
别走!这里有个笔记:图文讲解 AQS ,一起看看 AQS 的源码……(图文较长)(二)
AbstractQueuedSynchronizer 抽象队列同步器,简称 AQS 。是在 JUC 包下面一个非常重要的基础组件,JUC 包下面的并发锁 ReentrantLock CountDownLatch 等都是基于 AQS 实现的。所以想进一步研究锁的底层原理,非常有必要先了解 AQS 的原理。
120 0