正如 HashMap 文档中所述,当 HashMap 已满 75% 时,HashMap 会在内部对所有现有对象执行重新哈希。
如果在执行重新哈希时添加了任何元素 ->
- HashMap 是否有阻塞行为? - 意味着重新哈希将首先完成,然后将添加元素。
或者
- 我们是否有 HashMap 的非阻塞行为 - 意味着重新哈希将允许在重新哈希过程之间添加元素。
HashMap 如何在重新哈希时处理添加新元素?
最佳答案
来自Javadoc :
Note that this implementation is not synchronized. If multiple threads access a hash map concurrently, and at least one of the threads modifies the map structurally, it must be synchronized externally.
您必须应用外部同步;否则映射的状态可能会在多个线程访问时被破坏。
如果您正在同步,则在 map 重新排列自身时无法添加其他元素。
如果您没有同步,则表示您没有使用记录的类,因此行为未定义。
关于java - 阻塞或非阻塞 - 在 Java 的 HashMap 中重新散列期间添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50354957/