ConcurrentHashMap简介说明
下文笔者讲述并发容器ConcurrentHashMap的简介说明,如下所示
ConcurrentHashMap的简介
ConcurrentHashMap: 是一个线程安全且高效的HashMap实现 在高并发场景中使用map结构时,经常使用ConcurrentHashMap结构
ConcurrentHashMap如何实现线程安全和高效的呢?
JDK1.7中: ConcurrentHashMap使用Segment + HashEntry的数据结构 如下: 一个 ConcurrentHashMap 里包含一个 Segment 数组 Segment 的结构和 HashMap 类似,是一种数组和链表结构 segment继承ReentrantLock 一个 Segment 包含一个HashEntry 数组 每个 HashEntry 是一个链表结构的元素 当对 HashEntry 数组中数据进行修改时 须首先获得对应的 Segment锁---采用分段锁的方式实现线程安全 JDK1.8中: 放弃Segment这种复杂的设计 取而代之的是采用Node + CAS + Synchronized来保证并发安全 synchronized只锁定当前链表或红黑二叉树的首节点 这样只要hash不冲突,就不会产生并发,效率又提升N倍
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。