【并发编程篇15】ReentrantLock

42 阅读1分钟

ReentrantLock(中文直译:可重入锁), 特点:

  • 可中断
  • 可设置超时时间
  • 可设置公平锁
  • 支持多个条件变量(设置条件,让线程等待)
  • 与Synchronized一样,都支持重入

image.png

ReentrantLock的实现原理

ReentrantLock主要是利用CAS+AQS队列来实现。它支持公平锁和非公平锁,两者的实现类似。

构造方法接受一个可选的公平参数(默认非公平锁)。当设置true时,表示公平锁否则为非公平锁。

公平锁的效率往往没有非公平锁效率高。在许多线程访问的情况下,公平锁表现出较低的吞吐量。

image.png image.png

image.png

总结:

image.png