馬老師ID生成器與數(shù)據(jù)同步器原理 馬老師分布式鎖精講
2023-04-05 18:11 作者:貧道道號(hào)鴻鈞 | 我要投稿
ConcurrentHashMap 的實(shí)現(xiàn)采用了分段鎖的機(jī)制。在 Java 7 中,ConcurrentHashMap 使用了一個(gè)叫做 Segment 的類來劃分桶(bucket),每個(gè) Segment 都相當(dāng)于一個(gè)小的哈希表,它包含了多個(gè)桶,每個(gè)桶又是一個(gè)鏈表。Segment 內(nèi)部使用了 ReentrantLock 鎖,不同 Segment 之間并不會(huì)相互影響,因此多線程訪問不同的 Segment 時(shí)不會(huì)出現(xiàn)競(jìng)爭(zhēng)。
在 Java 8 中,ConcurrentHashMap 的實(shí)現(xiàn)發(fā)生了變化,它摒棄了之前使用 Segment 的分段鎖機(jī)制,采用了 CAS(Compare and Swap)和 synchronized 來保證并發(fā)安全。具體來說,ConcurrentHashMap 在
標(biāo)簽: