https://www.nowcoder.com/feed/main/detail/0cf068865ae644df86a588450c28835d

ReentrantLock 是 Java 中提供的一种锁实现,支持“可重入”的特性。可重入意味着一个线程在持有锁的情况下,可以再次获取该锁而不会被阻塞。

ReentrantLock 是通过以下几个关键机制来实现可重入锁的:

1. 线程持有计数器(Hold Count)

ReentrantLock 内部维护了一个线程持有计数器,用于记录当前锁被持有的次数。

2. 线程持有者(Owner Thread)

ReentrantLock 还维护了一个变量,记录当前持有锁的线程(Owner Thread)。

3. 公平性策略

ReentrantLock 可以配置为“公平锁”或“非公平锁”: