Java面試之HashMap多線程操作導致死循環問題

在多線程下,進行 put 操作會導致 HashMap 死循環,原因在於HashMap 的擴容 resize()方法。由於擴容是新建一個數組,複製原數據到數組。由於數組下標掛有鏈表,所以需要複製鏈表,但是多線程操作有可能導致環形鏈表。複製鏈表過程如下: 線程一:讀取到當前的 HashMap 情況,在準備擴容時,線程二介入 線程二:讀取 HashMap,進行擴容 線程一:繼續執行 這個過程爲,先將 A
相關文章
相關標籤/搜索