ReentrantLock的原理及可重入、可打断特性如何实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计823个文字,预计阅读时间需要4分钟。
原文内容过于详细,以下为简化版:
本文将简接介绍AQS源码,如需深入学习ReentrantLock的源码,请先阅读上一篇文章。ReentrantLock的原理涉及AQS的state操作,加锁即是增加state,解锁即释放资源。
本文紧接上文的AQS源码,如果对于ReentrantLock没有基础可以先阅读我的上一篇文章学习ReentrantLock的源码
ReentrantLock锁重入原理重入加锁其实就是将AQS的state进行加一操作
然后释放锁资源将AQS的state进行减一操作
当state为0时才会彻底的释放锁资源
ReentrantLock可打断原理在ReentrantLock中可打断就是在等待锁的过程中可以被interrupt打断(需要调用lockInterruptibly),lock方法设置了打断标记,但是只有在线程获得锁的时候才能知道自己有没有在阻塞的过程中有没有被打断。
本文共计823个文字,预计阅读时间需要4分钟。
原文内容过于详细,以下为简化版:
本文将简接介绍AQS源码,如需深入学习ReentrantLock的源码,请先阅读上一篇文章。ReentrantLock的原理涉及AQS的state操作,加锁即是增加state,解锁即释放资源。
本文紧接上文的AQS源码,如果对于ReentrantLock没有基础可以先阅读我的上一篇文章学习ReentrantLock的源码
ReentrantLock锁重入原理重入加锁其实就是将AQS的state进行加一操作
然后释放锁资源将AQS的state进行减一操作
当state为0时才会彻底的释放锁资源
ReentrantLock可打断原理在ReentrantLock中可打断就是在等待锁的过程中可以被interrupt打断(需要调用lockInterruptibly),lock方法设置了打断标记,但是只有在线程获得锁的时候才能知道自己有没有在阻塞的过程中有没有被打断。

