ReentrantLock源码的一点总结

Posted yuxin299

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ReentrantLock源码的一点总结相关的知识,希望对你有一定的参考价值。

ReentrantLock 是可重入锁,可重入锁的意思就是同一个线程可以重复获得该锁。

如何做到可重复获得该锁?计数器实现。

技术图片

第一次加锁,cas比较是不是0,是0设置为1,并设置当前拥有锁的线程;

第二次及后续枷锁,调用acquire方法。

技术图片

在计数器不是0的情况下,就会比较当前线程是不是同一个线程,如果是同一个线程那么就将技术器+1。

这样就完成了一个重入锁了,重点在于判断是否是同一个线程,同一个线程才能重入。

以上是关于ReentrantLock源码的一点总结的主要内容,如果未能解决你的问题,请参考以下文章

ReentrantLock使用Condition实现线程的等待和唤醒

[源码分析]ReentrantLock & AbstractQueuedSynchronizer

ReentrantLock (重入锁) 源码浅析

[源码分析]ReentrantLock & AbstractQueuedSynchronizer & Condition

源码分析:①ReentrantLock之公平锁和非公平锁

ReentrantLock.unlock()源码解析,部分AQS源码