短视频
2025/12/30大约 2 分钟面试题面试题
来源:短视频
我心态崩了啊,工作三年了,这个都不知道,大家好,我是百里,今天我们来聊聊 ReentrantLock 的公平与非公平锁机制
首先,公平锁就是讲究先来后到,线程按请求顺序排队获取锁。
这种模式下,每个线程都有机会,但在高竞争环境下,效率可能不是最优。
而非公平锁,有点儿“先抢先得”的意思,线程有机会插队获取锁。
这种方式在某些情况下能提升性能,但也可能会让一些线程等待更久。
ReentrantLock 默认采用非公平锁策略,也就是直接尝试获取锁,不考虑其他线程是否在等待。
如果锁不可用,线程才会加入到 AQS 队列中,等待下一次机会。
在公平锁模式下,ReentrantLock 会先检查 AQS 队列,确保按照请求顺序分配锁。
这样确保了公平性,但可能会因为线程状态切换而牺牲一些性能。
至于选择哪种模式,这取决于实际应用的场景。
如果需要严格顺序控制,选公平锁。
如果追求极致性能,非公平锁可能更适合。
以上就是 ReentrantLock 的公平锁与非公平锁。
希望这能帮助你更好地理解它们之间的区别和适用场景。