
很多人都在問hashmap為什么是線程不安全的,今天就給大家講解一下hashmap為什么是線程不安全的 。
演示機(jī)型:華為MateBook X 系統(tǒng)版本:win10 1、JDK1.7中,由于多線程對HashMap進(jìn)行擴(kuò)容,調(diào)用了HashMap,當(dāng)某個(gè)線程執(zhí)行過程中,被掛起,其他線程已經(jīng)完成數(shù)據(jù)遷移,等CPU資源釋放后被掛起的線程重新執(zhí)行之前的邏輯,數(shù)據(jù)已經(jīng)被改變,造成死循環(huán)、數(shù)據(jù)丟失 。
【hashmap為什么是線程不安全的】2、JDK1.8 中,由于多線程對HashMap進(jìn)行put操作,調(diào)用了HashMap,假設(shè)兩個(gè)線程A、B都在進(jìn)行put操作,并且hash函數(shù)計(jì)算出的插入下標(biāo)是相同的,當(dāng)線程A執(zhí)行完第六行代碼后由于時(shí)間片耗盡導(dǎo)致被掛起,而線程B得到時(shí)間片后在該下標(biāo)處插入了元素,完成了正常的插入,然后線程A獲得時(shí)間片,由于之前已經(jīng)進(jìn)行了hash碰撞的判斷,所有此時(shí)不會再進(jìn)行判斷,而是直接進(jìn)行插入,這就導(dǎo)致了線程B插入的數(shù)據(jù)被線程A覆蓋了,從而線程不安全 。
推薦閱讀
- 曹操屬于三國的嗎
- 盛唐時(shí)期是什么時(shí)候
- 中國朝代順序表口訣是什么
- 孫權(quán)的老婆是誰
- 奇亞籽是減肥產(chǎn)品嗎 奇亞籽真的可以減肥嗎
- 曹操是什么地方哪里人
- 古長安是現(xiàn)在的哪里
- 上官婉兒在武則天時(shí)期被稱為什么
- 西紅柿沒有籽能吃嗎怎么種 西紅柿有籽好還是無籽好
- 昭儀是什么意思
