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

Ash*_*ish 5 java concurrency

重新散列会增加段数吗?或者在重新散列 CHM 时并发级别会发生变化吗?

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

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

Pet*_*rey 0

随着 ConcurrentHashMap 大小的增加,段的数量不会改变。可以访问集合的线程数量并不像访问映射的活动线程数量那么重要。如果您有 4 个核心,则最多为 4 个,即使它们所做的只是访问地图而不执行其他操作。这是一个极端的例子。

实际上,一次访问映射的线程往往少于一个,有时有 2-4 个线程访问映射,这在使用段时会有所帮助。