java源码 - ReentrantReadWriteLock读锁介绍
开篇 这篇文章主要从源码角度讲解ReentrantReadWriteLock的ReadLock的加锁和减锁过程。 ReentrantReadWriteLock的ReadLock加锁解锁过程依赖于AQS类,所以有些相同的逻辑可以看看ReentrantLock的逻辑。 ReentrantReadWriteLock的ReadLock的唤醒过程具备传播性: 假设按照顺序A->B->C->D占用读锁,唤醒会依次进行 A线程占用读锁被唤醒后,A线程的锁释放会唤醒B线程。 B线程占用读锁被唤醒后,B线程的锁释放会唤醒C线程。 C线程占用读锁被唤醒后,C线程的锁释放会唤醒D线程。 ReentrantReadWriteLock的数据结构介绍 java源码 - ReentrantReadWriteLock读锁介绍 java源码 - ReentrantReadWriteLock写锁介绍 加锁过程 ReadLock的lock()内部通过sync. acquireShared(1)获取锁。 acquireShared()方法内部先通过tryAcquireShared尝试获取锁。 如果获锁失败执...