ConcurrentHashMap原理分析

Posted zpp1234

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ConcurrentHashMap原理分析相关的知识,希望对你有一定的参考价值。

CHM 的使用
ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,所以 ConcurrentHashMap 在并发编程的场景中使用的频率比较高,那么这一节课我们就从 ConcurrentHashMap 的使用上以及源码层面来分析 ConcurrentHashMap 到底是如何实现 安全性的
api 使用
ConcurrentHashMap是Map的派生类,所以api基本和 Hashmap是类似,主要就是put、 get 这些方法,接下来基于 ConcurrentHashMap 的 put 和 get 这两个方法作为切入点来分 析ConcurrentHashMap的源码实现

ConcurrentHashMap 的源码分析
先要做一个说明,这节课分析的ConcurrentHashMap是基于jdk1.8的版本。
JDK1.7 和 Jdk1.8 版本的变化
ConcurrentHashMap 和 HashMap 的实现原理是差不多的,但是因为 ConcurrentHashMap 需要支持并发操作,所以在实现上要比hashmap稍微复杂一些。 在 JDK1.7 的实现上,ConrruentHashMap 由一个个 Segment 组成,简单来说, ConcurrentHashMap是一个Segment数组,它通过继承ReentrantLock来进行加锁,通过 每次锁住一个segment来保证每个segment内的操作的线程安全性从而实现全局线程安全。 整个结构图如下

 

以上是关于ConcurrentHashMap原理分析的主要内容,如果未能解决你的问题,请参考以下文章

jdk源码分析之ConcurrentHashMap

ConcurrentHashMap实现线程安全的原理

ConcurrentHashMap

面试题:ConcurrentHashMap实现线程安全的原理

ConcurrentHashMap实现原理

源码分析--ConcurrentHashMap与HashTable(JDK1.8)