后端面试必会之ConcurrentHashMap的实现原理和使用

为什么要使用ConcurrentHashMap?

没有对比就没有伤害,在并发编程中使用HashMap可能会导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,才有了ConcurrentHashMap。

为什么说HashMap可能会导致死循环?

因为HashMap在并发执行put操作时,会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不会为空,就会产生死循环获取Entry,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。

为什么说HashTable效率低下?

HashTable使用synchronized来保证线程安全。当一个线程访问HashTable的同步方法,其他线程也访问HashTable的同步方法就会进入阻塞或轮训状态。这个的同步方法包括读和写,可以理解HashTable只有 一把锁,所有的线程不管做什么,都是竞争这一把锁,例如线程1使用put进行元素添加,线程2不但不能使用put来添加元素,也不能使用get方法来获取元素。

为什么ConcurrentHashMap效率高,线程安全?

因为ConcurrentHashMap使用锁分段技术来有效的提升并发的访问率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值