是什么导致ConcurrentHashMap调整大小

时间:2019-04-28 18:03:31

标签: java hashmap concurrenthashmap

我认为是ConcurrentHashMap is resized here

我希望当负载系数达到某个阈值时会调整ConcurrentHashMap的大小。

但是,我看不出通过addCount方法进行的调整大小与负载因子有什么关系。

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

1 个答案:

答案 0 :(得分:3)

来自ConcurrentHashMap的javadoc:

  

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

     

表太多时,表将动态扩展     冲突(即具有不同哈希码但属于     以表大小为模的相同插槽),并具有预期的平均值     每个映射大致维护两个bin的效果(对应     调整为0.75的负载因子阈值)。可能有很多     添加和删​​除映射时,围绕此平均值的方差,但是     总体而言,这保持了普遍接受的时间/空间权衡     哈希表。但是,调整此哈希或任何其他类型的哈希的大小     表可能是一个相对缓慢的操作。如果可能,这是一个     提供大小估算值作为可选的{@code     initialCapacity}构造函数参数。额外的可选     {@code loadFactor}构造函数参数提供了进一步的方法     通过指定表密度来定制初始表容量     用于计算要分配给     给定数量的元素。另外,为了与以前的版本兼容     此类的版本,构造函数可以选择指定一个     预期的{@code concurrencyLevel}作为其他提示     内部上浆。