深入理解ReentrantLock和AQS
ReentrantLock.lock,就是使用CAS更新AQS的state字段的值,该字段是volatile修饰
state=0:说明没线程获取锁,可以尝试获取。
state>0:说明,已经有线程获取了锁。如果当前线程就是ExclusiveOwnerThread,state+1
否则获取锁失败,进入队列
- ReentrantLock.lock()方法的调用图
- ReentrantLock.unlock()方法
也就是将AQS的state-1
- ReentrantLock和AQS的类图
- ReentrantLock非公平锁,执行过程
ReentrantLock公平锁,执行过程
暂时写到这里,有时间再继续更新细节