Java7中ConcurrentHashMap使用的就是鎖分段技術,ConcurrentHashMap由多個Segment組成(Segment下包含很多Node,也就是我們的鍵值對了),每個Segment都有把鎖來實現(xiàn)線程安全,當一個線程占用鎖訪問其中一個段數(shù)據(jù)的時候,其他段的數(shù)據(jù)也能被其他線程訪問。
Java8中的鎖的粒度比Java7中更細了,Java8鎖住的一個某一個數(shù)組元素table[i](頭節(jié)點,該頭結點類型是鏈表頭結點或紅黑樹的頭結點),而Java7中segment鎖住的是一個HashEntry數(shù)組,相當于鎖住了多個數(shù)組元素;所以我感覺Java8中ConcurrentHashMap多線程環(huán)境下?put效率更高。