正如HashMap的文档中给出的,当HashMap已满75%时,HashMap会在内部执行所有现有对象的重新散列。
如果在执行rehashing时,添加了任何元素 - >
或
HashMap如何处理在重新散列时添加新元素?
答案 0 :(得分:1)
来自Javadoc:
请注意,此实施未同步。如果多个线程同时访问哈希映射,并且至少有一个线程在结构上修改了映射,则必须在外部进行同步。
您必须应用外部同步;否则,在多线程访问时,地图的状态可能会被破坏。
如果您正在同步,则在地图重新排列时不能添加其他元素。
如果您没有进行同步,则表明您没有使用该类,因此行为未定义。
答案 1 :(得分:1)
它没有阻塞,但它也不会“允许在重组过程之间添加元素”。java.util.HashMap
被记录为线程不安全。如果你试图在地图上重新添加或删除,你会得到不一致的行为。
您可能需要考虑使用java.util.concurrent.ConcurrentHashMap
。