在JUC包中AbstractQueuedSynchronizer经常被称作队列同步器(AQS),是JUC包内锁的实现关键,那要实现一个可重入锁需要几个核心要素
- 需要一个记录锁状态的变量state,state至少需要两个值0、1,对state操作要保证安全性,需要使用到CAS(自旋)
- 需要有一个变量保存当前是那个线程持有锁
- 需要一个列表存储当前等待锁的线程的列表
- 需要有一个可以唤醒和阻塞线程的操作
那对标AQS
- 记录锁的状态
- 保存当前是那个线程持有的锁,在AQS父类AbstractOwnableSynchronizer中
- 存储当前等待的线程列表
- 唤醒和堵塞线程的操作
使用的是LockSupport工具类中的lock、pack方法
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84271.html