ReentrantLock类的源码
类的继承关系
ReentrantLock类实现了Lock和Serializable(序列化接口)接口,Lock接口的方法列表如下:
这几个接口的作用都是耳熟能详了,就不介绍了。
内部类
Sync类
Sync类实现了AQS,即是一个同步器,下面是这个类的常用方法:
FairSync类
FairSync继承了Sync内,其实就是ReentrantLock的公平锁实现。下面FairSync的加锁方法的源码:
可见调用其实就是AQS的核心方法acquire方法罢了。至于解锁方法,和非公平共用同一个方法:
调用的也是AQS的release方法。
NonfairSync类
NonfairSync其实就是ReeentrantLock的非公平锁的实现,与公平锁的区别就在于加锁方法:
具有参考:https://www.yuque.com/zhengzaijiazai-9byqp/xac6x1/vdr9bb#Nn3xT
类的属性
类的属性其实只要两个:“serialVersionUID”和“sync”,即序列版本号和同步器。
类的方法
类的构造方法
类的构造方法有两个,上图中第一个构造方法无参,默认采用非公平锁实现;第二个构造方法有参,传入true表示采用公平锁实现,false表示非公平锁实现。
核心方法
类的核心方法其实就是前面的realese和acquire方法,具体源码参考:https://www.yuque.com/zhengzaijiazai-9byqp/xac6x1/vdr9bb#YG6j9
ReentrantLock类的使用
ReentrantLock类的具体使用参考前面的文章:https://www.yuque.com/docs/share/a03d16d8-e8f4-4bc8-a9de-0b82e1060f30?# 《ReentrantLock的使用》