集合框架之CurrentHashMap

一. 简介

  • CurrentHashMap是线程安全的、采用数组+链表实现的Key-Value结构。

二. 原理

  1. 为什么要将CurrentHashMap线程安全?
    在并发情况下,虽然可以使用Collections.synchronizedMap()创建线程安全的map集合;或者使用线程安全的Hashtable,但是二者效率太低,故有了效率和性能更高的CurrentHashMap。

  2. 实现
    JDK1.7版本:数组+链表
    (1)Segment数组的每个单元维护了一个HashEntry(类似HashMap);
    (2)对Segment数组的每个单元分别加锁(即采用了分段锁);
    (3)每个HashEntry都采用volatile修饰Value和下一个节点next。

    JDK1.8的优化:
    (1)放弃了原来的分段锁,采用CAS+Synchronized;
    (2)将HashEntry改成Node,依旧用volatile修饰值和next;
    (3)在链表大于8时候会转换红黑树。

发布了70 篇原创文章 · 获赞 4 · 访问量 6373

猜你喜欢

转载自blog.csdn.net/qq_44837912/article/details/104385040