Java-014-HashMap 多線程操作導致死循環問題

在多線程下,進行 put 操作會導致 HashMap 死循環,原因在於 HashMap 的擴容 resize()方法。由於擴容是新建一個數組,複製原數據到數組。由於數組下標掛有鏈表,所以需要複製鏈表,但是多線程操作有可能導致環形鏈表。複製鏈表過程如下: 以下模擬2個線程同時擴容。假設,當前 HashMap 的空間爲2(臨界值爲1),hashcode 分別爲 0 和 1,在散列地址 0 處有元素 A
相關文章
相關標籤/搜索