可重入锁的几个核心要素对标AQS
时间 2021-01-09
标签
AQS
java
在JUC包中AbstractQueuedSynchronizer经常被称作队列同步器(AQS),是JUC包内锁的实现关键,那要实现一个可重入锁需要几个核心要素
- 需要一个记录锁状态的变量state,state至少需要两个值0、1,对state操作要保证安全性,需要使用到CAS(自旋)
- 需要有一个变量保存当前是那个线程持有锁
- 需要一个列表存储当前等待锁的线程的列表
- 需要有一个可以唤醒和阻塞线程的操作
那对标AQS
- 保存当前是那个线程持有的锁,在AQS父类AbstractOwnableSynchronizer中
使用的是LockSupport工具类中的lock、pack方法