本章会介绍JUC包中locks包的框架;在后面的章节中,会对锁的各个部分进行详细介绍。
java.util.concurrent.locks包的框架如下图:
说明:
1.
AbstractOwnableSynchronizer是一个抽象类,它是
AbstractQueuedSynchronizer和AbstractQueuedLongSynchronizer共同的父类。
2. LockSupport是提供“创建锁”和“其他同步类的基本线程阻塞原语”。
3.
Condition需要和Lock联合使用,它的作用是代替Object监视器方法,可以通过await(),signal()来休眠/唤醒线程。
4. Lock是“锁”的抽象接口。它声明了锁的公共API。
5.
ReentrantLock是“独占锁”对应的类。
(01) ReentrantLock实现了Lock接口。
(02) ReentrantLock的内部类Sync继承于AbstractQueuedSynchronizer。而“公平锁”FairSync 和
“非公平锁”NonfairSync 都继承于Sync。
6.
ReentrantReadWriteLock是“读写锁”对应的类。它包括一个“读取锁”和“写入锁”,“读取锁”是“共享锁”,而“写入锁”是“独占锁”。