锁7---分段锁(一种锁的形式)
生活随笔
收集整理的這篇文章主要介紹了
锁7---分段锁(一种锁的形式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鎖7—分段鎖(一種鎖的形式)
1、概念:
分段鎖其實是一種鎖的設計,并不是具體的一種鎖,對于ConcurrentHashMap而言,其并發的實現就是通過分段鎖的形式來實現高效的并發操作。
我們以ConcurrentHashMap來說一下分段鎖的含義以及設計思想,ConcurrentHashMap中的分段鎖稱為Segment,它即類似于HashMap(JDK7和JDK8中HashMap的實現)的結構,即內部擁有一個Entry數組,數組中的每個元素又是一個鏈表;同時又是一個ReentrantLock(Segment繼承了ReentrantLock)。
當需要put元素的時候,并不是對整個hashmap進行加鎖,而是先通過hashcode來知道他要放在哪一個分段中,然后對這個分段進行加鎖,所以當多線程put的時候,只要不是放在一個分段中,就實現了真正的并行的插入。
但是,在統計size的時候,可就是獲取hashmap全局信息的時候,就需要獲取所有的分段鎖才能統計。
分段鎖的設計目的是細化鎖的粒度,當操作不需要更新整個數組的時候,就僅僅針對數組中的一項進行加鎖操作。
總結
以上是生活随笔為你收集整理的锁7---分段锁(一种锁的形式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 360加固保 mac无法正常使用 解决方
- 下一篇: 递归神经网络(RNN)