您当前的位置: 首页 >  容器

顧棟

暂无认证

  • 1浏览

    0关注

    227博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【JUC系列】并发容器之ConcurrentHashMap(JDK1.7版)

顧棟 发布时间:2022-05-12 00:00:00 ,浏览量:1

ConcurrentHashMap(JDK1.7版)

文章目录
  • ConcurrentHashMap(JDK1.7版)
    • 组成
      • 常量值
      • 内部类
        • HashEntry
        • Segment
          • 构造函数
          • 主要方法
      • 构造函数
      • 数据结构
      • 主要方法
    • PUT过程
      • put下的并发问题
    • GET过程
      • get下的并发问题
由于HashMap线程不安全和HashTable效率低下,为了在并发环境下可以有线程安全的高效的Hash集合可以使用,产生了ConcurrentHashMap。支持检索的完全并发和可调整的预期更新并发的哈希表。

在JDK1.5~1.7版本,Java使用了分段锁机制实现ConcurrentHashMap。在使用中发现最大并发度受Segment的个数限制。因此,在JDK1.8中,ConcurrentHashMap的实现原理摒弃了这种设计,而是选择了与HashMap类似的数组+链表+红黑树的方式实现,而加锁则采用CAS和synchronized实现。

组成 常量值
    /**
     * 此表的默认初始容量,在构造函数中未另行指定时使用。
     */
    static final int DEFAULT_INITIAL_CAPACITY = 16;

    /**
     * 此表的默认加载因子,在构造函数中未另行指定时使用。
     */
    static final float DEFAULT_LOAD_FACTOR = 0.75f;

    /**
     * 此表的默认并发级别,在构造函数中未另行指定时使用。
     */
    static final int DEFAULT_CONCURRENCY_LEVEL = 16;

    /**
     * 最大容量,如果一个更高的值由任何一个带参数的构造函数隐式指定时使用。
     * 必须是 2             
关注
打赏
1663402667
查看更多评论
0.0388s