HashTable,HashMap,ConcurrentHashMap的区别

目录

1.线程安全问题考虑:

2.ConcurrentHashMap的优点

3.HashMap 的key允许为NULL,另外两个不允许


1.线程安全问题考虑:


HashMap线程不安全

HashMap,ConcurrentHashMap线程安全

但是不推荐使用HashTable,因为Hashtable是使用一把大锁,把所有代码给锁起来,

这样所冲突的概率很大,相当于你两个线程在哈希表上的不同哈希桶上的元素修改也会造成阻塞

而ConcurrentHashMap改善了这个缺点

2.ConcurrentHashMap的优点

1.把锁的粒度细化了,每个哈希桶有有一把锁,这样在修改不同哈希桶上不会发生问题。

2.读没加锁,写才加锁

3.更充分的使用CAS特性 ---》在维护size的时候,对size++,size--这些操作使用了CAS,也就是这些操作都是原子型的

4.针对扩容场景进行了优化,正常是一口气完成,但是它是化整为零的方法

一口气完成:在某次put的时候,有put来完成整个扩容。不好,这样这次put会很慢

化整为零:重新哈希的时候 每次基本操作都扩容一点点。搬运过程中,新的旧的哈希表一起存在,查询的时候新表旧表一起查; 新增操作直接往新表上新增

3.HashMap 的key允许为NULL,另外两个不允许

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值