(算法面试:二)Hashtable和ConcurrentHashMap

本文探讨了线程安全在多线程环境中的重要性,特别聚焦于Java中的Hashtable和ConcurrentHashMap。HashMap在多线程下不安全,而Hashtable通过内置锁实现线程安全,但效率较低。相比之下,ConcurrentHashMap在JDK1.7及之后版本采用分段锁策略,提高了并发性能,JDK1.8进一步优化,使用更细粒度的锁,提升了并发处理能力。
摘要由CSDN通过智能技术生成

((算法面试:二)Hashtable和ConcurrentHashMap

Hashtable和ConcurrentHashMap如何实现线程安全

在这里插入图片描述
第一题:
在未作同步控制时,就算是最简单的线程也不能保证是安全的;例:用两个线程做累加计时器时不但不安全,就连每次结果都是不一定的。

第二题
1:HashMap在多线程下肯定是线程不安全的;
2:HashMap的get,put方法源码,未加任何与同步有关的关键字;
在这里插入图片描述
在这里插入图片描述

第三题
1:HashTable将所有和数据打交道的方法都加了内置锁;但在多线程环境下都有synchronize关键字,这样效率很低下;
2:HashTable在get,put,contains等方法加了synchronize关键字(内置锁);
在这里插入图片描述

第四题:
但在多线程环境下都有synchronize关键字,这样效率很低下,故需要这个ConcurrentHashMap

第五题
在这里插入图片描述
1:HashTable是吧数组链表上所有的元素看成一个大桶,当有一个数据进入做数据处理时其它线程都要等待;

2:ConcurrentHashMap;1:在jdk1.7前,如果是1000个桶分成16个端也就是16把锁;2:在jdk1.8后,如果是1000个桶那分1000把锁,每个桶都有自己独立的锁并不互相干扰,这样锁的力度更小,多线程同时并发的数量更多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值