(锁) 系列篇 -- "3.1、Lock简述"

 Lock接口规范定义锁的基本操作,根据不同实现逻辑实现"公平机制的锁"、"非公平机制的锁"、"可重入的锁"。
public interface Lock {
    void lock();

    void lockInterruptibly() throws InterruptedException;
   
    boolean tryLock();
   
    boolean tryLock(long time, TimeUnit unit) throws InterruptedException;

    void unlock();
    
    // 精细控制锁力度,类似Object的notify、notifyAll、wait等锁操作
    Condition newCondition();
}
 
Lock家族图谱如下,基本串联所有j.u.c.locks包下类之间关系。 Lock接口定义规范 和 AbstractQueuedSynchronizer(AQS)提供实现基础,成为了核心汇集点。
 
 核心类:
  • AbstractOwnableSynchronizer : 记录当前保持独占同步的线程的简单类。
  • AbstractOwnableSynchronizer.java
  • AbstractQueuedLongSynchronizer / AbstractQueuedSynchronizer :AQS核心逻辑利用虚拟双向队列 CLH (Craig, Landin, and Hagersten)实现获锁、释放锁、排队系列操作,是并发包最核心逻辑。
  • ReentrantLock / ReentrantReadWriteLock :独占锁 和 读写锁,实现更高效锁机制。
  • Condition:细粒度控制锁,每个Condition条件将会建立一个虚拟队列 与 CLH关联,进而达到控制锁。
  • LockSupport:线程唤醒、休眠辅助类。

猜你喜欢

转载自www.cnblogs.com/xiaoxing/p/12565347.html
今日推荐