hashmap線程安全嗎 什么解決方案 hashmap為什么是線程不安全的

hashmap線程安全嗎 什么解決方案 hashmap為什么是線程不安全的

【hashmap線程安全嗎 什么解決方案 hashmap為什么是線程不安全的】
演示機型:華為MateBook X系統版本:win101、JDK1.7中,由于多線程對HashMap進行擴容,調用了HashMap , 當某個線程執行過程中,被掛起,其他線程已經完成數據遷移,等CPU資源釋放后被掛起的線程重新執行之前的邏輯,數據已經被改變 , 造成死循環、數據丟失 。

2、JDK1.8 中,由于多線程對HashMap進行put操作,調用了HashMap , 假設兩個線程A、B都在進行put操作 , 并且hash函數計算出的插入下標是相同的,當線程A執行完第六行代碼后由于時間片耗盡導致被掛起,而線程B得到時間片后在該下標處插入了元素,完成了正常的插入,然后線程A獲得時間片,由于之前已經進行了hash碰撞的判斷,所有此時不會再進行判斷 , 而是直接進行插入,這就導致了線程B插入的數據被線程A覆蓋了 , 從而線程不安全 。

經驗總結擴展閱讀