在 ConcurrentHashMap 中,我们有基本上扩展 ReentrantLock 的段。
static final class Segment<K,V> extends ReentrantLock implements Serializable
这个 ReentrantLock 是否使用它的公平属性?
public ReentrantLock(boolean fair) {
sync = fair ? new FairSync() : new NonfairSync();
}
因此,假设线程 t1 在 ConcurrentHashMap 的一个分区上具有读锁,另外两个线程 t2 和 t3 分别在同一分区上等待读锁和写锁。所以一旦 t1 释放它的锁,哪个(t2 或 t3)将获得锁。
据我所知,如果将公平设置为真,那将是等待时间最长的人。但是在concurrentHashMap的情况下是否设置为true?如果不是,我们可以肯定地说哪个线程将获得下一个锁?