ConcurrentHashMap 底层具体实现

简介: ConcurrentHashMap 是一种线程安全的高效Map集合底层数据结构:● JDK1.7的 ConcurrentHashMap 底层采用 分段的数组+链表 实现,● JDK1.8 采用的数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树。JDK1.7首先将数据分为一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段 数据时,其他段的数据也能被其他线程访问。在JDK1.7中,ConcurrentHashMap采用Segment + HashEntry的方式进行实现一个 ConcurrentHashMap 里包含一个 Segment 数组。S

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

目录
打赏
0
0
0
0
44
分享
相关文章
【JDK 源码分析】ConcurrentHashMap 底层结构
【1月更文挑战第27天】【JDK 源码分析】ConcurrentHashMap 底层结构
ConcurrentHashMap的底层实现与深度分析
【11月更文挑战第15天】在Java并发编程中,ConcurrentHashMap是一个非常重要的数据结构,它提供了一种线程安全的哈希表实现。随着Java版本的迭代,ConcurrentHashMap的实现也在不断优化,以更好地支持高并发场景。
73 4
探索ConcurrentHashMap:从底层到应用的深度剖析
【10月更文挑战第6天】在Java并发编程中,ConcurrentHashMap是一个非常重要的数据结构,它提供了一种线程安全的哈希表实现。本文将深入探讨ConcurrentHashMap的底层存储结构、红黑树转换时机、数组扩容时机、核心属性sizeCtl、数组初始化、DCL操作、散列算法、写入操作的并发安全、计数器的安全机制以及size方法的实现策略。
122 1
ConcurrentHashMap底层详解
ConcurrentHashMap底层详解
358 2
ConcurrentHashMap底层详解
Java多线程基础-18:线程安全的集合类与ConcurrentHashMap
如果这些单线程中的集合类确实需要在多线程中使用,该怎么办呢?思路有两个: 最直接的方式:使用锁,手动保证。如多个线程修改ArrayList对象,此时就可能有问题,就可以给修改操作进行加锁。但手动加锁的方式并不是很方便,因此标准库还提供了一些线程安全的集合类。
178 4
Java并发编程中的高效数据结构 - ConcurrentHashMap
本文将深入探讨Java并发编程中的一种高效数据结构 - ConcurrentHashMap。我们将详细介绍ConcurrentHashMap的基本原理,包括其设计思路、实现方式以及如何在多线程环境下提供高效的并发访问。同时,我们还将通过实例代码演示如何使用ConcurrentHashMap来优化并发程序的性能。
synchronized底层
synchronized底层
77 0
Java并发编程中的高效数据结构:ConcurrentHashMap解析
【4月更文挑战第25天】在多线程环境下,高效的数据访问和管理是至关重要的。Java提供了多种并发集合来处理这种情境,其中ConcurrentHashMap是最广泛使用的一个。本文将深入分析ConcurrentHashMap的内部工作原理、性能特点以及它如何在保证线程安全的同时提供高并发性,最后将展示其在实际开发中的应用示例。
ConcurrentHashMap 底层具体实现
ConcurrentHashMap 底层具体实现
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等