直接来自website:
但是,如果我们将公平性参数指定为“真”,而 创建一个新的ReentrantLock对象,它给了我们保证 最长的等待线程将获得锁定。听起来不错 正确?
我认为它永远不会得到保证,它只会影响调度程序的决定。不是它或上面链接的网站实际上说的是真相吗?
提前致谢。
答案 0 :(得分:3)
API documentation for ReentrantLock说(我的重点):
此类的构造函数接受可选的fairness参数。 当设置为true时,在争用下,锁有利于授予访问权限 最长等待的线程。否则此锁不保证任何 特定的访问顺序。使用公平锁的程序由许多人访问 线程可以显示较低的总吞吐量(即,较慢;通常 比使用默认设置的那些慢得多,但要小一些 获得锁定的时间差异并保证缺乏饥饿。 但是,请注意,锁的公平性并不能保证公平性 线程调度。因此,使用公平锁定的许多线程之一可能 在其他活动线程连续多次连续获取它 没有进展,目前没有锁定。还要注意 不定时的tryLock方法不尊重公平性设置。它会 如果即使其他线程正在等待锁定也可以成功。
所以你引用的网站似乎过于简单了。