ReentrantLock源码中如何实现可重入锁机制?

2026-06-11 15:217阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1968个文字,预计阅读时间需要8分钟。

ReentrantLock源码中如何实现可重入锁机制?

谈到多线程,不可避免地要提到锁(Lock)。在JDK中,已经为我们提供了多种锁的实现,足以满足我们大部分的需求。今天,我们就来了解一下最常用的ReentrantLock的实现。实际上,最初是想写一篇关于锁的深入探讨。


谈到多线程,就不避开锁(Lock),jdk中已经为我们提供了好几种锁的实现,已经足以满足我们大部分的需求了,今天我们就来看下最常用的ReentrantLock的实现。

其实最开始是想写一篇关于StampedLock的源码分析的,但发现写StampedLock前避不开ReentrantReadWriteLock,写ReentrantReadWriteLock又避不开ReentrantLock,他们仨是逐层递进的关系。ReentrantReadWriteLock解决了一些ReentrantLock无法解决的问题,StampedLock又弥补了ReentrantReadWriteLock的一些不足,三者有各自的设计和有缺点,这篇文章先和你一起看下ReentrantLock,之后我们会再一起去了解ReentrantReadWriteLock和StampedLock,相信有了ReentrantLock的基础后面的内容也会容易理解很多。


相对于jdk中很多其他的类来说,ReentrantLock提供的接口已经算是非常简单,事实上它只有一个构造参数​​boolean fair​​,用来指定是公平锁还是非公平锁,如果你指定的话默认是非公平锁。

阅读全文

本文共计1968个文字,预计阅读时间需要8分钟。

ReentrantLock源码中如何实现可重入锁机制?

谈到多线程,不可避免地要提到锁(Lock)。在JDK中,已经为我们提供了多种锁的实现,足以满足我们大部分的需求。今天,我们就来了解一下最常用的ReentrantLock的实现。实际上,最初是想写一篇关于锁的深入探讨。


谈到多线程,就不避开锁(Lock),jdk中已经为我们提供了好几种锁的实现,已经足以满足我们大部分的需求了,今天我们就来看下最常用的ReentrantLock的实现。

其实最开始是想写一篇关于StampedLock的源码分析的,但发现写StampedLock前避不开ReentrantReadWriteLock,写ReentrantReadWriteLock又避不开ReentrantLock,他们仨是逐层递进的关系。ReentrantReadWriteLock解决了一些ReentrantLock无法解决的问题,StampedLock又弥补了ReentrantReadWriteLock的一些不足,三者有各自的设计和有缺点,这篇文章先和你一起看下ReentrantLock,之后我们会再一起去了解ReentrantReadWriteLock和StampedLock,相信有了ReentrantLock的基础后面的内容也会容易理解很多。


相对于jdk中很多其他的类来说,ReentrantLock提供的接口已经算是非常简单,事实上它只有一个构造参数​​boolean fair​​,用来指定是公平锁还是非公平锁,如果你指定的话默认是非公平锁。

阅读全文