https://www.nowcoder.com/feed/main/detail/0cf068865ae644df86a588450c28835d
ReentrantLock
是 Java 中提供的一种锁实现,支持“可重入”的特性。可重入意味着一个线程在持有锁的情况下,可以再次获取该锁而不会被阻塞。
ReentrantLock
是通过以下几个关键机制来实现可重入锁的:
ReentrantLock
内部维护了一个线程持有计数器,用于记录当前锁被持有的次数。
unlock()
时,计数器减1。ReentrantLock
还维护了一个变量,记录当前持有锁的线程(Owner Thread)。
ReentrantLock
可以配置为“公平锁”或“非公平锁”: