在Java中的ConcurrentHashMap中重新散列会增加段的数量吗?

时间:2011-07-24 05:34:39

标签: java concurrency

是否会重新增加细分数量?或者在重组CHM时并发级别是否会发生变化?

如果不是(最有可能),那么为什么在java中给出了这种行为,因为CHM中的条目数增加,更多的线程将访问同一个段并且可能需要更高级别的并发性?

编辑:我想如果给出了段增加的功能,则需要锁定所有段。那是什么原因?

1 个答案:

答案 0 :(得分:0)

当ConcurrentHashMap的大小增加时,段数不会改变。可以访问集合的线程数量不如访问映射的活动线程数量那么重要。如果你有4个核心,这最多只有4个核心,即使他们只是访问地图而不做任何其他事情。这是一个极端的例子。

实际上,您往往只有一个线程一次访问一个地图,有时2-4个线程访问地图,这在使用分段时会有所帮助。