源码阅读之ReentrantLock
本文主要从ReentrantLock非公平模式下的加锁过程讲起。
ReentrantLock的结构
ReentrantLock类中包含一个名为Sync
的抽象类,继承于java.util.concurrent.locks.AbstractQueuedSynchronizer
,并为公平锁和非公平锁提供了不同的实现:FairSync
和NonfairSync
。
1 | public class ReentrantLock implements Lock, java.io.Serializable { |
AbstractQueuedSynchronizer
AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器, 比如我们提到的 ReentrantLock,Semaphore,其他的诸如 ReentrantReadWriteLock,SynchronousQueue,FutureTask(jdk1.7) 等等皆是基于 AQS 的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Uyuhz's Blog!