(算法面试:二)Hashtable和ConcurrentHashMap

((算法面试:二)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把锁,每个桶都有自己独立的锁并不互相干扰,这样锁的力度更小,多线程同时并发的数量更多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值