hashmap 多线程处理会死循环
时间: 2023-12-06 10:37:30 浏览: 176
多线程死锁问题
在多线程环境下,使用非线程安全的 HashMap 进行 put 操作可能会导致死循环。这是因为 HashMap 是采用链表解决 Hash 冲突,而链表结构很容易形成闭合的链路。在多线程并发的情况下,如果两个线程同时触发了 rehash 操作,就有可能产生闭合的回路,从而导致死循环。具体来说,当 HashMap 的 size 大于 initialCapacity*loadFactor 时,就会触发 rehash 操作,这时候 HashMap 的结构就会发生翻天覆地的变化,很有可能就是在两个线程在这个时候同时触发了 rehash 操作,产生了闭合的回路。解决这个问题的方法是使用线程安全的 ConcurrentHashMap,或者在对 HashMap 进行并发操作时使用锁来保证线程安全。
阅读全文