ConcurrentHashMap解析

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锁住桶的头节点**,再操作链表/树。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值