Lock接口
我们现在就来看看lock接口定义了哪些方法:
1 | //获取锁 |
实现类 - ReentrantLock
1 | public class ReentrantLock implements Lock, java.io.Serializable |
很显然ReentrantLock类实现了lock接口,接下来我们来仔细研究一下它是怎样实现的。
当你查看源码时,你会惊讶的发现ReentrantLock并没有多少代码,另外有一个很明显的特点是:基本上所有的方法的实现实际上都是调用了其静态抽象类Sync中的方法,而Sync类继承了AbstractQueuedSynchronizer(AQS)。静态抽象类Sync有两个实现类,分别是NonfairSync类和FairSync类。
可以看出要想理解ReentrantLock关键核心在于对队列同步器AbstractQueuedSynchronizer(简称同步器)的理解。