hashmap為什么是線程不安全的
發布時間:2025-07-09閱讀(13)
演示機型:華為MateBook X 系統版本:win10 1、JDK1.7中,由于多線程對HashMap進行擴容,調用了HashMap,當某個線程執行過程中,被掛起,其他線程已經完成數據遷移,等CPU資源釋放后被掛起的線程重新執行之前的邏輯,數據已經被改變,造成死循環、數據丟失。2、JDK1.8 中,由于多線程對HashMap進行put操作,調用了HashMap,假設兩個線程A、B都在進行put操作,并且hash函數計算出的插入下標是相同的,當線程A執行完第六行代碼后由于時間片耗盡導致被掛起,而線程B得到時間片后在該下標處插入了元素,完成了正常的插入,然后線程A獲得時間片,由于之前已經進行了hash碰撞的判斷,所有此時不會再進行判斷,而是直接進行插入,這就導致了線程B插入的數據被線程A覆蓋了,從而線程不安全。
歡迎分享轉載→http://www.avcorse.com/read-558075.html