分段鎖
併發容器類的加鎖機制是基於粒度更小的分段鎖,分段鎖也是提公升多併發程式效能的重要手段之一。
在併發程式中,序列操作是會降低可伸縮性,並且上下文切換也會減低效能。在鎖上發生競爭時將通水導致這兩種問題,使用獨佔鎖時保護受限資源的時候,基本上是採用序列方式—-每次只能有乙個執行緒能訪問它。所以對於可伸縮性來說最大的威脅就是獨佔鎖。
概念分段鎖其實是一種鎖的設計,並不是具體的一種鎖
設計目的
細化鎖的粒度,當操作不需要更新整個陣列的時候,就僅僅針對陣列中的一項進行加鎖操作。
實現原理
對資料分段加鎖提高併發效率
例項jdk8之前的concurrenthashmap,jdk8後採用cas+synchronized。通過hashcode計算到索引後對資料分段加鎖
鎖7 分段鎖(一種鎖的形式)
1 概念 分段鎖其實是一種鎖的設計,並不是具體的一種鎖,對於concurrenthashmap而言,其併發的實現就是通過分段鎖的形式來實現高效的併發操作。我們以concurrenthashmap來說一下分段鎖的含義以及設計思想,concurrenthashmap中的分段鎖稱為segment,它即類似...
樂觀鎖與悲觀鎖, 面試必考
悲觀鎖 比較悲觀,每次去拿資料的時候,都認為資料會被修改。所以每次在拿資料的時候都會上鎖,這樣別人想拿這個資料就會阻塞。像關係型資料庫裡邊就用到了很多這種鎖機制。使用場景 但如果是多寫的情況,一般會經常產生衝突,所以一般多寫的場景下用悲觀鎖就比較合適。樂觀鎖 總是樂觀,每次去拿資料的時候都認為別人不...
悲觀鎖 面試必備之 樂觀鎖與悲觀鎖
一 什麼是悲觀鎖?什麼是樂觀鎖?1 鎖 lock 在介紹樂觀鎖和悲觀鎖之前,我們先介紹下鎖。在日常生活中,我們經常接觸到鎖這個東西,比如家裡門上的鎖,自行車上的鎖,保險櫃上的鎖等,這些都是為了保障我們的財產安全而上的鎖。而在程式中,鎖是一種保障資料安全的機制和手段。在多併發的情況,當同時多個請求修改...