【发布时间】:2020-11-25 01:56:14
【问题描述】:
接口Lock有一个有用的布尔公平参数来保证锁定中的公平 - 等待锁定时间最长的线程,得到先锁。我想我想在任何地方都使用它,因为它可以防止饥饿。好吧,在我读到它会降低我们的性能之前,不是这样。
我找不到这个问题的答案,所以我希望有人能解决这个问题。意思是,采用“尊重”公平的线程和不尊重的线程之间有什么区别?它们不是都存储在其他等待线程所在的“普通”队列中吗?
【问题讨论】:
-
您需要考虑操作系统在选择执行线程时应用了算法。它不是随机选择,它当然更智能地实施。通过使用公平锁定,您绕过了操作系统的这些优化。我确定您也绕过了 JVM 的优化。
标签: java multithreading locking