gpt4 book ai didi

java - SynchronizedMap 类中重载构造函数的目的

转载 作者:行者123 更新时间:2023-11-30 06:08:14 26 4
gpt4 key购买 nike

Collections类中,SynchronizedMap类有两个构造函数。一个只需要一个 map 实例,另一个则需要一个 map 和一个 mutex

    SynchronizedMap(Map<K,V> m) {
this.m = Objects.requireNonNull(m);
mutex = this;
}

SynchronizedMap(Map<K,V> m, Object mutex) {
this.m = m;
this.mutex = mutex;
}

但是,SynchronizedMap 类是一个私有(private)静态类,并且是使用提供的包装方法访问它的唯一方法:

public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {
return new SynchronizedMap<>(m);
}

据了解this link ,第二个构造函数使用用户提供的 mutex 而不是 this 的想法。现在,由于包装方法是获取 SynchronizedMap 实例(仅需要一个 map 对象)的唯一方法,那么第二个重载构造函数的目的是什么?

最佳答案

它用于例如在 SynchronizedSortedMap 中,它在创建子 map View 时扩展了 SynchronizedMap

 public SortedMap<K,V> subMap(K fromKey, K toKey) {
synchronized (mutex) {
return new SynchronizedSortedMap<>(
sm.subMap(fromKey, toKey), mutex);
}
}

共享相同的互斥锁。

关于java - SynchronizedMap 类中重载构造函数的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50829463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com