公平性是否保证FIFO调度?

时间:2013-07-23 14:11:24

标签: java multithreading synchronization reentrantlock

直接来自website

  

但是,如果我们将公平性参数指定为“真”,而   创建一个新的ReentrantLock对象,它给了我们保证   最长的等待线程将获得锁定。听起来不错   正确?

我认为它永远不会得到保证,它只会影响调度程序的决定。不是它或上面链接的网站实际上说的是真相吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

API documentation for ReentrantLock说(我的重点):

  

此类的构造函数接受可选的fairness参数。   当设置为true时,在争用下,锁有利于授予访问权限   最长等待的线程。否则此锁不保证任何   特定的访问顺序。使用公平锁的程序由许多人访问   线程可以显示较低的总吞吐量(即,较慢;通常   比使用默认设置的那些慢得多,但要小一些   获得锁定的时间差异并保证缺乏饥饿。   但是,请注意,锁的公平性并不能保证公平性   线程调度。因此,使用公平锁定的许多线程之一可能   在其他活动线程连续多次连续获取它   没有进展,目前没有锁定。还要注意   不定时的tryLock方法不尊重公平性设置。它会   如果即使其他线程正在等待锁定也可以成功。

所以你引用的网站似乎过于简单了。

相关问题