【问题标题】:Does fairness guarantee FIFO scheduling?公平性能保证 FIFO 调度吗?
【发布时间】:2013-07-23 14:11:23
【问题描述】:

直接来自这个website

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

我认为它永远无法保证,它只会影响调度程序的决定。是不是还是上面链接的网站说的是真话?

提前致谢。

【问题讨论】:

    标签: java multithreading synchronization reentrantlock


    【解决方案1】:

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

    这个类的构造函数接受一个可选的公平参数。 当设置为 true 时,在争用情况下,锁倾向于授予对 等待时间最长的线程。否则此锁不保证任何 特定的访问顺序。使用许多人访问的公平锁的程序 线程可能会显示较低的整体吞吐量(即较慢;通常 慢得多)比那些使用默认设置,但有更小的 获得锁和保证没有饥饿的时间差异。 但是请注意,锁的公平性并不能保证锁的公平性 线程调度。 因此,使用公平锁的许多线程之一可能 连续多次获取,同时其他活动线程 没有进展并且当前没有持有锁。另请注意, untimed tryLock 方法不遵守公平设置。它会 即使其他线程正在等待,如果锁可用,则成功。

    所以看起来你引用的网站有点过于简单了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-26
      • 2019-05-26
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 2018-02-21
      • 2022-01-13
      • 2020-08-08
      相关资源
      最近更新 更多