正如在HashMap文档中给出的,当HashMap已满75%时,HashMap在内部执行对所有现有对象的重新散列。
如果在执行重散列时添加了任何元素,则为->
或
在重新散列过程中,HashMap是如何处理添加新元素的?
发布于 2018-05-15 16:35:19
来自Javadoc
注意,此实现不是同步的. If多线程并发访问哈希映射,并且至少有一个线程在结构上修改映射,因此必须在外部同步。
您必须应用外部同步;否则,在多个线程访问的情况下,映射的状态可能会损坏。
如果您正在同步,则在映射重新排列自身时,不能添加其他元素。
如果不同步,则不使用文档中的类,因此行为是未定义的。
发布于 2018-05-15 16:41:14
它没有阻塞,但它也不会“允许在重哈希进程之间添加元素”。java.util.HashMap被记录为线程不安全。如果在重新散列过程中试图在地图上添加或删除元素,则会出现不一致的行为。
您可能想考虑使用java.util.concurrent.ConcurrentHashMap。
https://stackoverflow.com/questions/50354957
复制相似问题