当前位置: 首页 > ai >正文

ConcurrentHashMap原理

ConcurrentHashMap 是专门为并发场景设计的,支持高效的并发读写操作

原理:

通过分段锁(Segment Locking)或 CAS(Compare-And-Swap)等机制来保证线程安全,而不需要像 Hashtable 那样对整个表加锁。

分段锁机制(JDK 1.7 及之前):


在 JDK 1.7 中,ConcurrentHashMap 使用了一种称为“分段锁”(Segmented Locking)的技术。
整个哈希表被分成多个段(Segment),每个段相当于一个小的哈希表,独立加锁。
不同线程可以同时访问不同的段,从而提高了并发性能。

CAS + synchronized(JDK 1.8 及之后):


在 JDK 1.8 中,ConcurrentHashMap 改进了实现方式,摒弃了分段锁,转而使用更细粒度的锁和 CAS 操作。
它采用类似 HashMap 的链表+红黑树结构,并在需要时对单个桶(Bucket)加锁(使用 synchronized 关键字)。
这种设计进一步提高了并发性能,尤其是在读多写少的场景下。

CAS:


CAS 操作接受三个参数:内存位置(V)、预期旧值(A)和新值(B)。
它会检查内存位置 V 中的值是否等于预期旧值 A。
如果相等,则将内存位置 V 更新为新值 B,并返回成功;如果不相等,则不进行任何操作,并返回失败。
这个过程是原子性的,意味着它要么完全执行,要么完全不执行,不会出现中间状态。
java.util.concurrent.atomic 包下的类(如 AtomicInteger, AtomicLong, AtomicReference 等)就利用了 CAS 来实现原子操作

http://www.xdnf.cn/news/1798.html

相关文章:

  • 数据结构之排序
  • 声呐系统概述
  • Android Privacy Sandbox实战:零基础开发企业级广告系统(附完整代码+GDPR合规+联邦学习全攻略)
  • 【AI生成】无人平台与自组网融合技术在电网中的应用研究
  • SiSi Coin全球共识社区开创Meme币新纪元,通缩机制与社区自治引领Web3未来
  • QuickLookv3.7.3(官方版)文件快速预览工具软件下载及安装教程
  • vue入门
  • [ESP-IDF]:esp32-camera 使用指南 ESP32S3-OV2640 用例测试
  • 初一试后担忧
  • 《梦的第七章》开荒秘籍:必练 SSR 角色与培养优先级全解析
  • 面试中被问到mybatis与jdbc有什么区别怎么办
  • unity 读取csv
  • MySQL性能常用优化技巧总结
  • fpga系列 HDL:verilog latch在fpga中的作用 避免latch的常见做法
  • 优选算法第十讲:字符串
  • Typecho 访客统计插件最新版-前后台统计图均可显示
  • 220V降24V500mA非隔离恒压芯片WT5110
  • m365是什么,和o365的区别
  • word删除空白页的方面
  • Java技术体系的主要产品线详解
  • YOLOv5改进(十)-- 轻量化模型MobileNetv4
  • 基于javaweb的SpringBoot校园服务平台系统设计与实现(源码+文档+部署讲解)
  • JWT(JSON Web Token)用户认证
  • DeepSeek 部署中的常见问题及解决方案全解析
  • 工业自动化中的高效桥梁:EtherCAT转Profinet网关在封装环节的应用
  • 二叉树的最大深度
  • Godot开发2D冒险游戏——第一节:主角登场!
  • NEWport太阳光模拟器与AVANTES光谱仪与太阳能模拟器光谱匹配度检测应用
  • Python实现异步编程的重要方式【协程(Coroutine)函数】(内含详细案例)
  • 计算机组成与体系结构:直接内存映射(Direct Memory Mapping)