ConcurrentHashMap 和 Hashtable 的区别?

本文详细探讨了ConcurrentHashMap与Hashtable的区别。ConcurrentHashMap在保证线程安全的同时,通过分段锁实现更细粒度的同步,提高了并发性能。它使用内部类Node和Segment来封装键值对并充当锁的角色,使得常用操作如get, put, remove等只锁定所需的部分数据,而非整个结构。相比之下,Hashtable每次同步操作会锁住整个表,效率相对较低。
摘要由CSDN通过智能技术生成

ConcurrentHashMap 和 Hashtable 的区别?

ConcurrentHashMap 结合了 HashMap 和 HashTable 二者的优势。
HashMap 没有考虑同步,hashtable 考虑了同步的问题。但是 hashtable 在每次同步执行时都要锁住整个结构。
ConcurrentHashMap 锁的方式是稍微细粒度的。 ConcurrentHashMap 将 hash 表分为 16 个桶(默认值),
诸如 get,put,remove 等常用操作只锁当前需要用到的桶。

ConcurrentHashMap 的具体实现?

该类包含两个静态内部类 Node 和 Segment;前者用来封装映射表的键值对,后者用来充当锁的角色;
Segment 是一种可重入的锁 ReentrantLock,每个 Segment 守护一个 Node 数组里得元素,
当对 Node 数组的数据进行修改时,必须首先获得对应的 Segment 锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值