zoukankan      html  css  js  c++  java
  • ConcurrentHashMap分析

    1、ConcurrentHashMap锁分段技术                    

    ConcurrentHashMap使用锁分段技术,首先将数据分成一段一段地存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候其他段的数据也能被其他线程访问。

     2、ConcurrentHashMap的结构                               

    ConcurrentHashMap是由Segment数组结构HashEntry数组结构组成。

    Segment是一种可重入锁(ReentrantLock),在ConcurrentHashMap里扮演锁的角色;

    HashEntry用来存储键值对数据

    一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结构。

    一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素,每个Segment守护着一个HashEntry数组里的元素,当对HashEntry数组的数据进行修改时,必须首先获得与它对应的Segment锁

     3、ConcurrentHashMap的初始化                                  

    通过initialCapacity初始化容量loadFactor负载因子concurrencyLevel等几个参数来初始化segment数组、段偏移量segmentShift、段掩码segmentMask和每个segment里的HashEntry数组来实现的。

     4、定位Segment                                                             

    既然ConcurrentHashMap使用分段锁Segment来保护不同段的数据,那么在插入和获取元素的时候,必须先通过散列算法定位到Segment。

     5、ConcurrentHashMap的操作                              

    a、get操作

    b、put操作

    c、size操作

  • 相关阅读:
    Team Foundation Server操作说明
    SPSS二次开发
    EXT 组件一些属性与方法(Tree)
    win10经验总结
    for语句执行顺序
    数组快速生成range的方法
    切图技巧
    input和textarea区别
    hosts文件位置
    css3动画总结
  • 原文地址:https://www.cnblogs.com/fankongkong/p/7280235.html
Copyright © 2011-2022 走看看