Hashtable与HashMap,ConcurrentHashMap的区别

1.比较一下两者
1)HashMap不是线程安全的,HashTable是线程安全。
2)HashMap允许空(null)的键和值(key),HashTable则不允许。
3)HashMap性能优于Hashtable。

HashTable容器使用synchronized来保证线程安全,
但在线程竞争激烈的情况下HashTable的效率非常低下。
因为当一个线程访问HashTable的同步方法时,
其他线程访问HashTable的同步方法时,可能会进入阻塞或轮询状态。
如线程1使用put进行添加元素,线程2不但不能使用put方法添加元素,
并且也不能使用get方法来获取元素,所以竞争越激烈效率越低。

Map
1.Map是一个以键值对存储的接口。Map下有两个具体的实现,分别是HashMap和HashTable.
2.HashMap是线程非安全的,HashTable是线程安全的,所以HashMap的效率高于HashTable.
3.HashMap允许键或值为空,而HashTable不允许键或值为空.
4.继承关系不同:

HashTable 
  public class Hashtable<K,V>
    extends Dictionary<K,V>1.0
implements Map<K,V>, Cloneable, java.io.Serializable {}
    HashMap
  public class HashMap<K,V>
    extends AbstractMap<K,V>1.2
implements Map<K,V>, Cloneable, Serializable{}

我们可以使用ConcurrentHashMap[1.5]来代替HashTable吗?
我们知道HashTable是synchronized的,但是ConcurrentHashMap同步性能更好,因为它仅仅根据同步级别对map的一部分进行上锁(分段式锁)。可以拿单例模式的双层锁模式来进行对比

    //list((数组)有序可重复,查询方便,插入,删除 慢)  
    set(链表)(不重复,插入删除快,查询慢)  map(map(k,v)hash算法保证了他的效率)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值