一、ReentrantLock类中的方法解读。
1、lock方法。实现了接口Lock中的lock方法。这里实际上是调用了sync成员变量的lock方法来实现。所以取决于sync的实现。
2、unlock方法。实现了接口Lock中的unlock方法。这里实际上是调用了sync成员变量的release方法来实现。所以取决于sync的实现。
3、lockInterruptibly方法。实现了接口Lock中的unlock方法。这里实际上是调用了sync成员变量的acquireInterruptibly方法来实现。所以取决于sync的实现。
4、trylock方法。实现了接口Lock中的trylock方法。这里实际上是调用了sync成员变量的anonfairTryAcquire方法来实现。所以取决于sync的实现。
5、trylock重载的方法。实现了接口Lock中的trylock重载方法。这里实际上是调用了sync成员变量的tryAcquireNanos方法来实现。所以取决于sync的实现。
6、newCondition方法。实现了接口Lock中的newCondition方法。这里实际上是调用了sync成员变量的newCondition方法来实现。所以取决于sync的实现。
7、getHoldCount方法。这里实际上是调用了sync成员变量的getHoldCount方法来实现。所以取决于sync的实现。
8、isHeldByCurrentThread方法。这里实际上是调用了sync成员变量的isHeldByCurrentThread方法来实现。所以取决于sync的实现。
9、isLocked方法。这里实际上是调用了sync成员变量的isLocked方法来实现。所以取决于sync的实现。
10、isFair方法。判断该ReentrantLock对象中sync成员是不是内部类FairSync的实例。
11、hasQueuedThreads方法。这里实际上是调用了sync成员变量的hasQueuedThreads方法来实现。所以取决于sync的实现。
12、hasQueuedThread方法。这里实际上是调用了sync成员变量的hasQueuedThread方法来实现。所以取决于sync的实现。
13、hasWaiters方法。这里实际上是调用了sync成员变量的hasWaiters方法来实现。所以取决于sync的实现。
14、getOwner方法。这里实际上是调用了sync成员变量的getOwner方法来实现。所以取决于sync的实现。
15、getQueuedThreads方法。这里实际上是调用了sync成员变量的getQueuedThreads方法来实现。所以取决于sync的实现。
16、getWaitingThreads方法。这里实际上是调用了sync成员变量的getWaitingThreads方法来实现。所以取决于sync的实现。
17、getQueueLength方法。这里实际上是调用了sync成员变量的getQueueLength方法来实现。所以取决于sync的实现。
18、getWaitQueueLength方法。这里实际上是调用了sync成员变量的getWaitQueueLength方法来实现。所以取决于sync的实现。
19、toString方法。这里实际上是调用了sync成员变量的getOwner方法来实现。所以取决于sync的实现。打印出线程名称/null。
#################################################################################
由于ReentrantLock类的成员变量sync是抽象类,因此里面的方法取决于运行时动态指定的,这里,他有两个实现类,一个是FairSync类,一个是NonFairSync类。仔细一看,两个类里面都只有两个成员方法。显然,这两个方法在两个类中实现是不同的,不然干嘛分两个类呢。而ReentrantLock类中大部分方法都是调用sync,因此大部分方法应该在Sync类和Sync的继承类AbstractQueuedSynchronizer中。
###############################################################################
二、NonFairSync类中的方法。
0、方法目录。
1、lock方法。实现了Sync类中的方法。
2、tryAcquire方法。实现了父类Sync的父类AQS的方法。实际上调用的是Sync类中的nonfairTryAcquires方法。
4
三、FairSync类中的方法。
0、方法目录。
1、lock方法。
2、tryAcquire方法。实现了父类Sync的父类AQS的方法。
3、
四、Sync类中的方法。
0、方法目录。
1、lock方法。抽象方法,交给实现类来实现。
2、nonfairTryAcquires方法。
3、tryRelease方法。
4、isHeldExclusively方法。
5、newCondition方法。这里直接使用了父类的内部类。
6、getOwner方法。
7、getHoldCount方法。
8、isLocked方法。
9、readObject方法。
10、
五、AbstractQueuedSynchronizer类中的方法。
-1、成员变量目录。
0、方法目录。
1、
2、
4、
5、
6、
7、
8、
9、
六、
1、
2、
3、
4、
5、