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不冲 突,就不会产生并发 , 效率得到提升

相关文章
|
6月前
|
存储 安全 Java
【JDK 源码分析】ConcurrentHashMap 底层结构
【1月更文挑战第27天】【JDK 源码分析】ConcurrentHashMap 底层结构
|
存储 算法 Java
HashMap 之底层数据结构和扩容机制
HashMap 之底层数据结构和扩容机制
912 1
|
存储 安全 Java
ConcurrentHashMap底层实现原理
ConcurrentHashMap底层实现原理
269 0
|
存储 算法 安全
HashMap底层实现原理
HashMap底层实现原理
165 0
|
5天前
|
存储 算法 安全
ConcurrentHashMap的底层实现与深度分析
【11月更文挑战第15天】在Java并发编程中,ConcurrentHashMap是一个非常重要的数据结构,它提供了一种线程安全的哈希表实现。随着Java版本的迭代,ConcurrentHashMap的实现也在不断优化,以更好地支持高并发场景。
15 4
|
1月前
|
存储 SQL 安全
探索ConcurrentHashMap:从底层到应用的深度剖析
【10月更文挑战第6天】在Java并发编程中,ConcurrentHashMap是一个非常重要的数据结构,它提供了一种线程安全的哈希表实现。本文将深入探讨ConcurrentHashMap的底层存储结构、红黑树转换时机、数组扩容时机、核心属性sizeCtl、数组初始化、DCL操作、散列算法、写入操作的并发安全、计数器的安全机制以及size方法的实现策略。
54 1
|
5月前
|
存储 安全 容器
ConcurrentHashMap底层详解
ConcurrentHashMap底层详解
268 2
ConcurrentHashMap底层详解
|
安全 Java 编译器
HashMap, HashTable, ConcurrentHashMap 之间的区别
HashMap, HashTable, ConcurrentHashMap 之间的区别
99 0
|
6月前
|
存储 Java
【JDK 源码分析】HashMap 底层结构
【1月更文挑战第27天】【JDK 源码分析】HashMap 底层结构
|
安全
多线程环境下,如何实现一个 Hash 结构?介绍一下 ConCurrentHashMap 的底层原理?
多线程环境下,如何实现一个 Hash 结构?介绍一下 ConCurrentHashMap 的底层原理?
76 0
多线程环境下,如何实现一个 Hash 结构?介绍一下 ConCurrentHashMap 的底层原理?