currenthashmap面試 CocurrentHashMap和Hashtable的區別,cocurrenthashmap?
CocurrentHashMap和Hashtable的區別,cocurrenthashmap?哈希表被廣泛使用。HashMap是在新框架中用來替換hashtable的類。換句話說,建議使用HashMa
CocurrentHashMap和Hashtable的區別,cocurrenthashmap?
哈希表被廣泛使用。HashMap是在新框架中用來替換hashtable的類。換句話說,建議使用HashMap而不是hashtable。
也許您認為哈希表很容易使用,為什么不呢?下面簡要分析一下他們之間的差異。1hashtable的方法是同步的,而HashMap是不同步的,所以在很多情況下
currenthashmap是線程安全的。當多個線程同時更新一個數據時,不會出現同時得到修改的情況。在java7和java8中,結構不一樣,java8做了很多優化。
1. 并發HashMap是通過數組鏈表的段鎖來實現的。
2. 鎖定操作鎖定一個部分,而不是鎖定整個結構。其它各段均能正常工作,保證了螺紋的安全性,提高了效率。
3. 但是,這個位置很麻煩。元素位置需要散列兩次,第一次是定位段,第二次是定位元素所在的鏈表頭。
1. java8采用數組鏈表紅黑樹設計,CAS實現線程安全。
2. 最初在Java7中使用的段鎖定現在被調整為鎖定每個數組元素。
3. 與java8中的HashMap一樣,它采用了紅黑樹結構,因此查詢效率更快。當鏈表節點數超過8個時,鏈表將被轉換成紅黑樹存儲,但哈希沖突加劇。
4. 查詢時間復雜度:從原始遍歷鏈表o(n)到遍歷紅黑樹o(logn)。
currenthashmap是線程安全的嗎,數據結構,底層怎么優化的?
一定要安全。否則,人們已經有了HashMap。為什么寫這個