ConcurrentHashMap
0. ConcurrentHashMap 的整体架构
当我们初始化一个 ConcurrentHashMap 实例时,默认会初始化一个长度为 16 的数组。 由于 ConcurrentHashMap 它的核心仍然是 hash 表,所以必然会存在 hash 冲突问题。 ConcurrentHashMap 采用链式寻址法来解决 hash 冲突。 当 hash 冲突比较多的时候,会造成链表长度较长,这种情况会使得 ConcurrentHashMap 中数据元素的查询复杂度变成 O(n)。因此在 JDK1.8 中,引入了 红黑树的机制。 当数组长度大于 64 并且链表长度大于等于 8 的时候,单向链表就会转换为红黑树。

本图摘自咕泡教育的开源文档。
1. ConcurrentHashMap 的基本功能
本质上是一个 HashMap,因此功能和 HashMap 一样,但是 ConcurrentHashMap 在 HashMap 的基础上,提供了并发安全的实现。 并发安全的主要实现是通过对指定的 Node 节点加锁,来保证数据更新。
2.ConcurrentHashMap 在性能方面的优化
锁的粒度;红黑树。(待更新
ConcurrentHashMap 里面有很多设计思想值得学习和借鉴。 比如锁粒度控制、分段锁的设计等,它们都可以应用在实际业务场景中。
Last updated