可重入锁的几个核心要素对标AQS

    技术2023-09-04  117

    在JUC包中AbstractQueuedSynchronizer经常被称作队列同步器(AQS),是JUC包内锁的实现关键,那要实现一个可重入锁需要几个核心要素

    需要一个记录锁状态的变量state,state至少需要两个值0、1,对state操作要保证安全性,需要使用到CAS(自旋)需要有一个变量保存当前是那个线程持有锁需要一个列表存储当前等待锁的线程的列表需要有一个可以唤醒和阻塞线程的操作

    那对标AQS

    记录锁的状态

    保存当前是那个线程持有的锁,在AQS父类AbstractOwnableSynchronizer中

    存储当前等待的线程列表

    唤醒和堵塞线程的操作

    使用的是LockSupport工具类中的lock、pack方法

    Processed: 0.008, SQL: 9