是什么原因导致调整ConcurrentHashMap的大小

问题描述 投票:1回答:1

我相信一个ConcurrentHashMap is resized here

我希望在加载因子达到某个阈值时调整ConcurrentHashMap的大小。

但是我没有看到addCount方法的调整大小与加载因子有什么关系。

调整ConcurrentHashMap大小的标准是什么?负载系数是其中之一吗?

java hashmap concurrenthashmap
1个回答
3
投票

来自ConcurrentHashMap的javadoc:

当占用率超过百分比阈值(名义上为0.75,但见下文)时,表格会调整大小。

当存在太多冲突时(即,具有不同哈希码的密钥但落入与表大小模数相同的槽中的密钥),该表被动态扩展,具有每个映射大致保持两个箱的预期平均效果(对应于0.75负载)调整大小的因子阈值)。随着映射的添加和删除,这个平均值可能会有很大的差异,但总的来说,这维持了哈希表的普遍接受的时间/空间权衡。但是,调整此大小或任何其他类型的散列表可能是一个相对较慢的操作。在可能的情况下,最好将大小估计值作为可选的{@code initialCapacity}构造函数参数提供。另一个可选的{@code loadFactor}构造函数参数通过指定在计算给定数量的元素时要分配的空间量时使用的表密度,提供了另一种自定义初始表容量的方法。此外,为了与此类的先前版本兼容,构造函数可以选择指定预期的{@code concurrencyLevel}作为内部大小调整的附加提示。

© www.soinside.com 2019 - 2024. All rights reserved.