本文主要解释“如何通过AQS锁定java可重入锁”。本文的解释简单明了,易学易懂。请跟随边肖的思路一起学习和学习“如何通过AQS锁定java可重入锁”!
AQS核心字段
状态锁定状态
ExclusiveOwnerThread持有锁
等待队列。是一个双向链表,它存储等待获取锁的线程数据。
00-1010如果状态=0,通过CAS将状态更改为1,并将exclusiveOwnerThread指向当前线程。
如果状态!=0,exclusiveOwnerThread=当前线程,然后是状态1
如果状态!=0,exclusiveOwnerThread!=当前线程,当前线程加入等待队列,并通过LockSupport.park()阻塞当前线程。
00-1010如果exclusiveOwnThread不是当前线程,则引发异常。
如果状态=1,请将exclusiveOwnThread更改为null,将状态更改为0,并解锁LockSupport.unpark()。
如果status1,状态=status-1。
感谢您的阅读,这就是“AQS如何锁定java可重入锁”的内容。学习完这篇文章,相信你对java ReentrantLock如何被AQS锁定有了更深入的了解,具体用法还需要实践验证。在这里,边肖将为您推送更多关于知识点的文章,敬请关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/96661.html