1 回答

TA貢獻(xiàn)35條經(jīng)驗(yàn) 獲得超44個(gè)贊
分段鎖就是將數(shù)據(jù)分段上鎖,把鎖進(jìn)一步細(xì)粒度化,有助于提升并發(fā)效率。
具體應(yīng)用如下:HashTable容器在競(jìng)爭(zhēng)激烈的并發(fā)環(huán)境下表現(xiàn)出效率低下的原因是所有訪問(wèn)HashTable的線程都必須競(jìng)爭(zhēng)同一把鎖,假如容器里有多把鎖,每一把鎖用于鎖容器其中一部分?jǐn)?shù)據(jù),那么當(dāng)多線程訪問(wèn)容器里不同數(shù)據(jù)段的數(shù)據(jù)時(shí),線程間就不會(huì)存在鎖競(jìng)爭(zhēng),從而可以有效提高并發(fā)訪問(wèn)效率,這就是ConcurrentHashMap所使用的鎖分段技術(shù)。首先將數(shù)據(jù)分成一段一段地存儲(chǔ),然后給每一段數(shù)據(jù)配一把鎖,當(dāng)一個(gè)線程占用鎖訪問(wèn)其中一個(gè)段數(shù)據(jù)的時(shí)候,其他段的數(shù)據(jù)也能被其他線程訪問(wèn)。
有興趣可以看看ConcurrentHashMap的源碼,里面的segment繼承自ReentrantLock,可以看看ReentrantLock這個(gè)的實(shí)現(xiàn)
添加回答
舉報(bào)