如果同一个线程一次又一次地获取锁,那么 ReentrantLock 如何公平?

use*_*723 3 java multithreading reentrantlock

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

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

use*_*577 5

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