美文网首页java并发相关
Java ConcurrentHashMap

Java ConcurrentHashMap

作者: 韭菜待收割 | 来源:发表于2018-09-27 14:59 被阅读5次

    1、ConcurrentHashMap

    ConcurrentHashMap是线程安全的,比起HashTable性能高出很多;key和值都不能为null。
    ConcurrentHashMap初始化时,Segment数组的默认大小ssize是16,HashEntry数组的大小为2的幂次方,默认大小也是2。

    2、ConcurrentHashMap的实现原理

    JDK1.7:

    采用Segment + HashEntry的方式进行实现;采用分段锁的方式。每个Segment下都含有HashEntry数组,如果发生hash冲突则以链表的形式存在。

    JDK1.8:

    放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现,链表长度过长会变为红黑树。

    3、ConcurrentHashMap的高并发性来源

    JDK1.7:

    1)采用分离锁减小了请求同一个锁的频率和时间
    2)用 final HashEntery 对象的不变性来避免读操作加锁的需求。
    3)Volatile变量来保证内存可见性。

    JDK1.8:

    CAS大部分时间都避免了锁竞争。

    相关文章

      网友评论

        本文标题:Java ConcurrentHashMap

        本文链接:https://www.haomeiwen.com/subject/sipeoftx.html