基础面试题——ConcurrentHashMap是如何保证线程安全的

在JDK1.8中,ConcurrentHashMap使用节点锁的思想,即采用"CAS + Synchronized"的
机制来保证线程安全

ConcurrentHashMap通过CAS原子操作来无锁更新数据,减少锁竞争。
只在必要时加锁,且锁粒度较小,仅作用于某个桶中的链表或树的头节点,而不是整个哈希表。这种细粒度的锁机制大大减少了锁的竞争,提高了并发性能

例如,在插入一个新的键值对时,如果目标桶的位置为空,
ConcurrentHashMap 会使用 CAS 操作尝试将新的节点放入。如果多个线程同时尝试插入,只有一个线程能够成功,其他线程会进行重试。
如果桶位置不为空,在链表或红黑树中更新节点时,ConcurrentHashMap 使用 synchronized 锁进行保护,以确保操作的原子性和线程安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值