ReentrantLock为什么是可重入的。
时间: 2024-01-12 09:07:14 浏览: 99
Java源码解析之可重入锁ReentrantLock
ReentrantLock是可重入的是因为它允许一个线程重新获取它已经持有的锁,也就是说,一个线程可以多次获得同一个ReentrantLock对象的锁,而不会被阻塞。这种机制也称为“递归锁”。
ReentrantLock通过记录当前持有锁的线程和持有的次数来实现可重入。当一个线程第一次获得锁时,它的持有次数为1;当它再次获得同一个锁时,持有次数会加1,当释放锁时,持有次数会减1,直到持有次数为0时,锁才会完全释放。
可重入锁的好处是避免了死锁。如果一个线程在持有锁的时候又去尝试获取同一个锁,而这个锁被其他线程占用,如果不支持可重入,那么这个线程就会被阻塞,从而导致死锁。而可重入锁则允许线程继续获取它已经持有的锁,从而避免了死锁的情况发生。
阅读全文