ReentrantLock
是 Java 中 java.util.concurrent.locks
包提供的一个可重入的互斥锁(Mutex)。它提供了与 synchronized
关键字类似的同步功能,但比 synchronized
更加灵活和强大。以下是一些关于 ReentrantLock
的关键点和用法示例:
关键特性
- 可重入性:
ReentrantLock
是可重入的,即同一个线程可以多次获得该锁而不会导致死锁。
- 灵活性:
- 与
synchronized
不同,ReentrantLock
提供了更多的功能和灵活性,比如定时锁获取、可中断的锁获取以及公平锁等。
- 与
- 公平锁与非公平锁:
ReentrantLock
可以选择是公平锁还是非公平锁。- 公平锁:按照线程请求锁的顺序依次获得锁,避免了线程饥饿问题,但性能较低。
- 非公平锁:不保证线程获得锁的顺序,性能较高,但可能导致某些线程长时间等待。
- 条件变量:
ReentrantLock
可以与Condition
条件变量一起使用,实现更复杂的线程间协调。