java中jdk1.8的hashmap为啥要用尾插法,不用头插入。
生活随笔
收集整理的這篇文章主要介紹了
java中jdk1.8的hashmap为啥要用尾插法,不用头插入。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
因為在多線程中會出現死循環的情況,就是有兩個線程,在同時運行,線程A在給hashmap進行 resize操作
線程B在進行add操作添加b進來,如果是頭插法, 在resize中,原本的最后一個元素A會重新放入到這個table數組中,在線程B準備插入一個數據B進來,
本來理想的情況是如下,
但是如果在Aresize重新hash的時候add了b 可能會產生如下的情況
講不清楚,具體看了源碼yy一下就能懂
?
然而尾插法就不會有這種情況,雖然說hashmap是線程不安全的,不建議在線程中使用
(線程中使用currenthashmap)
維護人員還是改了這個情況
總結
以上是生活随笔為你收集整理的java中jdk1.8的hashmap为啥要用尾插法,不用头插入。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IT行业前景怎么样,你还有机会吗?
- 下一篇: truncate 释放表空间