ReentrantLock锁面试题
时间: 2024-02-22 21:54:03 浏览: 122
ReentrantLock是Java中的一个可重入锁,它提供了与synchronized关键字类似的功能,但更加灵活和强大。下面是一些与ReentrantLock锁相关的面试题及其答案:
1. 什么是可重入锁?
可重入锁是指同一个线程可以多次获得同一个锁,而不会造成死锁。ReentrantLock就是一个可重入锁。
2. ReentrantLock相对于synchronized关键字有什么优势?
相对于synchronized关键字,ReentrantLock提供了更多的功能和灵活性。它可以实现公平锁和非公平锁,支持多个条件变量,可以中断等待锁的线程,还可以尝试获取锁等。
3. ReentrantLock如何实现可重入性?
ReentrantLock通过记录持有锁的线程和持有次数来实现可重入性。当一个线程再次获取已经持有的锁时,它的持有次数会增加,当释放锁时,持有次数会减少,只有当持有次数为0时,其他线程才能获取该锁。
4. ReentrantLock如何实现公平性和非公平性?
ReentrantLock可以通过构造函数来指定是公平锁还是非公平锁。公平锁会按照线程请求的顺序来获取锁,而非公平锁则允许插队,可能会导致某些线程一直获取不到锁。
5. ReentrantLock如何实现条件变量?
ReentrantLock提供了Condition接口来支持条件变量。通过调用ReentrantLock的newCondition()方法可以创建一个Condition对象,然后可以使用该对象的await()、signal()和signalAll()方法来实现线程的等待和唤醒。
阅读全文