【问题标题】:How is ReentrantLock fair if the same thread keeps acquiring the lock again and again?如果同一个线程一次又一次地获取锁,那么 ReentrantLock 如何公平?
【发布时间】:2018-10-11 02:09:51
【问题描述】:

我对高级 Java 和学习可重入锁相当陌生。我知道 ReentrantLock 有一个公平参数,可确保将锁分配给最饥饿的线程(与同步内在锁的情况不同。)

不过,可重入也意味着同一个线程可以通过增加holdCount一次又一次地重新获取锁。如果同一个线程永远获取锁,如何保证公平?

【问题讨论】:

  • 公平意味着等待时间较长的线程在争用中被优先考虑。如果一个线程重新获得了一个锁,就没有争用了,因为它已经是所有者了,所以公平性是无关紧要的。

标签: java multithreading reentrantlock


【解决方案1】:

如果线程重新进入锁,这意味着它还没有解锁它,给其他线程一个公平的机会。公平是在没有持有锁时选择下一个线程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多