ConcurrentHashMap
ConcurrentHashMap(简称 CHM)是 Java 并发包中高性能的线程安全哈希表实现。其设计目标是在高并发场景下提供高效的读写操作。以下是其核心原理和扩容机制(基于 JDK 8+ 的实现):
一、核心原理
1. 数据结构
-
数组 + 链表 + 红黑树
- 桶数组
Node<K,V>[] table存储数据。 - 当链表长度 ≥ 8 且数组长度 ≥ 64 时,链表转为红黑树(
TreeNode)。 - 当红黑树节点数 ≤ 6 时,退化为链表。
- 目的:平衡查询效率(链表 O(n) → 红黑树 O(log n))。
- 桶数组
2. 线程安全实现
-
CAS +
synchronized锁桶节点-
读操作:无锁(通过
volatile保证可见性)。 -
写操作:
- 桶为空 → CAS 插入节点。
- 桶非空 → **
synchronized锁住桶的头节点**,再操作链表/树。
-

最低0.47元/天 解锁文章
416

被折叠的 条评论
为什么被折叠?



