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内的操作的线程安全性从而实现全局线程安全。 整个结构图如下

相关推荐