ConcurrentHashMap 底层具体实现

简介: ConcurrentHashMap 底层具体实现

ConcurrentHashMap 是一种线程安全的高效Map集合

底层数据结构:

  • JDK1.7的 ConcurrentHashMap 底层采用 分段的数组+链表 实现,
  • JDK1.8 采用的数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树。

JDK1.7

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

在JDK1.7中,ConcurrentHashMap采用Segment + HashEntry的方式进行实现

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

Segment 是一种可重入的锁 ReentrantLock,每个 Segment 守护一个HashEntry 数组里得元 素,当对 HashEntry 数组的数据进行修改时,必须首先获得对应的 Segment 锁。

JDK1.8

在JDK1.8中,放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保 证并发安全进行实现,synchronized只锁定当前链表或红黑二叉树的首节点,这样只要hash不冲 突,就不会产生并发 , 效率得到提升

相关文章
|
1月前
|
存储 安全 Java
【JDK 源码分析】ConcurrentHashMap 底层结构
【1月更文挑战第27天】【JDK 源码分析】ConcurrentHashMap 底层结构
|
9月前
|
存储 安全 Java
ConcurrentHashMap底层实现原理
ConcurrentHashMap底层实现原理
149 0
|
9月前
|
存储 算法 安全
HashMap底层实现原理
HashMap底层实现原理
115 0
|
17天前
|
存储 安全 容器
ConcurrentHashMap底层详解
ConcurrentHashMap底层详解
ConcurrentHashMap底层详解
|
22天前
|
存储 算法 Java
HashMap 的实现原理
HashMap 的实现原理
|
1月前
|
存储 Java
【JDK 源码分析】HashMap 底层结构
【1月更文挑战第27天】【JDK 源码分析】HashMap 底层结构
|
1月前
|
存储 算法
HashMap的实现原理
HashMap的实现原理
|
11月前
|
存储 安全 Java
ConcurrentHashMap概念与深入理解
ConcurrentHashMap是Java集合框架中的一个重要类,它是线程安全的哈希表实现。相比于普通的HashMap,ConcurrentHashMap在多线程环境中提供了更好的性能和可靠性。本文将详细介绍ConcurrentHashMap的概念、特点以及其内部实现原理。
138 0
|
存储 缓存 Java
30. 说一下HashMap的实现原理?上
30. 说一下HashMap的实现原理?上
102 0
30. 说一下HashMap的实现原理?上
|
存储 索引
30. 说一下HashMap的实现原理?中
30. 说一下HashMap的实现原理?中
72 0
30. 说一下HashMap的实现原理?中