- 1
- 0
- 约1.45万字
- 约 23页
- 2017-01-29 发布于安徽
- 举报
ConcurrentHashMap结构分析.docx
ConcurrentHashMap结构分析一、ConcurrentHashMap结构为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。ConcurrentHashMap 类中包含两个静态内部类:HashEntry 和 Segment。HashEntry 用来封装映射表的键 / 值对Segment 用来充当锁的角色,每个 Segment 对象守护整个散列映射表的若干个桶。每个桶是由若干个 HashEntry 对象链接起来的链表。一个ConcurrentHashMap 实例中包含由若干个 Segment 对象组成的数组。1.1 HashEntry 类HashEntry 用来封装散列映射表中的键值对。在 HashEntry 类中,key,hash 和 next 域都被声明为 final 型,value 域被声明为 volatile 型。清单 1.HashEntry 类的定义static final class HashEntryK,V { final K key; // 声明 key 为 final 型 final int hash; // 声明 hash 值为 final 型 volatile V value; // 声明 value 为 volatile 型 final HashEntryK,V next; // 声明 next 为 final 型 HashEntry(K key, int hash, HashEntryK,V next, V value) { this.key = key; this.hash = hash; this.next = next; this.value = value; } }在 ConcurrentHashMap 中,(java培训就到源码时代)在散列时如果产生“碰撞”,将采用“分离链接法”来处理“碰撞”:把“碰撞”的 HashEntry 对象链接成一个链表。由于 HashEntry 的 next 域为 final 型,所以新节点只能在链表的表头处插入。 下图是在一个空桶中依次插入 A,B,C 三个 HashEntry 对象后的结构图: 图 1. 插入三个节点后桶的结构示意图:注意:由于只能在表头插入,所以链表中节点的顺序和插入的顺序相反。避免热点域在 ConcurrentHashMap中,每一个 Segment 对象都有一个 count 对象来表示本 Segment 中包含的 HashEntry 对象的个数。这样当需要更新计数器时,不用锁定整个 ConcurrentHashMap。1.2 Segment 类Segment 类继承于 ReentrantLock 类,从而使得 Segment 对象能充当锁的角色。每个 Segment 对象用来守护其(成员对象 table 中)包含的若干个桶。table 是一个由 HashEntry 对象组成的数组。table 数组的每一个数组成员就是散列映射表的一个桶。count 变量是一个计数器,(java培训就到源码时代)它表示每个 Segment 对象管理的 table 数组(若干个 HashEntry 组成的链表)包含的 HashEntry 对象的个数。每一个 Segment 对象都有一个 count 对象来表示本 Segment 中包含的 HashEntry 对象的总数。注意,之所以在每个 Segment 对象中包含一个计数器,而不是在 ConcurrentHashMap 中使用全局的计数器,是为了避免出现“热点域”而影响 ConcurrentHashMap 的并发性。清单 2.Segment 类的定义 static final class SegmentK,V extends ReentrantLock implements Serializable { /** * 在本 segment 范围内,包含的 HashEntry 元素的个数 * 该变量被声明为 volatile 型 */ transient volatile int count; /** * table 被更新的次数 */ transient int modCount; /**
您可能关注的文档
- CDS5.0安装使用说明.doc
- ch11-3复合函数微分法.ppt
- Chapter16插画设计.ppt
- Chapter1了解IllustratorCS5基础知识.ppt
- Chapter4ConsumptionandDemand.ppt
- Chapter7句子成分转译.ppt
- ComputationalLexiconsandtheSemanticWeb.ppt
- CPA《财务成本管理》科目公式大汇总(七).docx
- cp高考高中英语改错练习200篇[修改版].doc
- CSFB常见问题分析案例汇总.doc
- 腾讯安全沙龙:红队视角下的海外SRC猎场:战略、战术与突破.pdf
- 【icap】ETS的范围扩展:设计和政策挑战.docx
- bcg -美国最高法院关于关税的裁决对你的企业意味着什么 What Does the US Supreme Court Ruling on Tariffs Mean for Your Business.pdf
- 2026届甘肃兰州市高三下学期第一次模拟考试历史试卷(扫描版,含答案).docx
- bcg -零售银行如何让人工智能代理发挥作用 How Retail Banks Can Put AI Agents to Work.pdf
- 住宅项目规范解读(GB 55038-2025) -培训 - 房地产-2025.docx
- 盘扣式脚手架工程量自动计算表 -培训 -房地产-2025.pdf
- 广东省汕头市2024-2025学年高三下学期第一次模拟考试英语学试题(含答案).docx
- 品牌研究+_+2025+CAPSE中国航司品牌榜单.pdf
- 【银河专题】如何看待豆粕内外价差关系.pdf
最近下载
- 位错线∥b screw dislocation.ppt VIP
- DQ380变速箱培训教材.pptx VIP
- 基层党组织2026年组织生活会个人五个方面对照检查自我剖析4篇.docx VIP
- 2025年重庆中考数学备考全指南(考点+真题+计划)(知识点归纳,必考知识点、真题模拟试卷及解析).docx VIP
- 卫生院胸痛救治单元建设应知应会.docx VIP
- 自考 00260《刑事诉讼法学》可打印背诵版(表格 + 高频考点 + 答题模板).docx VIP
- 强酸性阳离子交换树脂催化酯化丙烯酸和甲醇合成丙烯酸甲酯的反应动力学.pdf VIP
- 2025 年大学新闻传播学(新闻学概论)试题及答案.doc VIP
- 《“十五五”规划建议》全文解读.ppt VIP
- Unit 1 People at work 教案 课件 外研版英语四年级下册.docx VIP
原创力文档

文档评论(0)