1. 程式人生 > >HashMap和ConcurrentHashMap的區別

HashMap和ConcurrentHashMap的區別

為了執行緒安全,ConcurrentHashMap 引入了一個 “分段鎖” 的概念。具體可以理解把一個大的 map 拆分成 N 個小的 Map 。最後再根據 key.hashcode( )來決定放到哪一個 hashmap 中去。

hashmap 本質是陣列+連結串列,根據 key.hashcode( ) 計算出陣列對應下標。如果多個 key 對應同一個下標,用一個連結串列串起來,新資料在前面。

ConcurrentHashMap :在 hashmap 基礎上,ConcurrentHashMap 將資料分解成多個 segment (預設 16 個),每次操作對 segment 加鎖,避免多執行緒鎖的機率,提高併發效率。