资讯专栏INFORMATION COLUMN

Hashtable和HashMap和ConcurrentHashMap

zhangfaliang / 3139人阅读

摘要:数据结构都是数组拉链实现的哈希表,但是具体实现上差别大了并发全表锁多线程不安全,需要自己封装加细粒度锁,读不加锁,如果读到空值再加锁。注意这三个关键字不允许用作为键和值允许全局最多一个键,但是允许无数个值不允许用作为键和值参考文档

1. 数据结构

都是数组+拉链实现的哈希表,但是具体实现上差别大了

2. 并发

Hashtable全表锁
HashMap多线程不安全,需要自己封装
ConcurrentHashMap加细粒度锁,读不加锁,如果读到空值再加锁。注意这三个关键字final,transient,volatile

3. null

Hashtable不允许用 null作为键和值
HashMap允许全局最多一个null键,但是允许无数个null值
ConcurrentHashMap不允许用 null作为键和值

参考文档
http://blog.csdn.net/kingzone_2008/article/details/8179701
http://zhangshixi.iteye.com/blog/672697
http://ifeve.com/concurrenthashmap/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64420.html

相关文章

  • java中ConcurrentHashMap的使用及在Java 8中的冲突方案

    摘要:中的使用及在中的冲突方案引言简称是在作为的替代选择新引入的,是包的重要成员。为了解决在频繁冲突时性能降低的问题,中使用平衡树来替代链表存储冲突的元素。目前,只有和会在频繁冲突的情况下使用平衡树。 java中ConcurrentHashMap的使用及在Java 8中的冲突方案 1、引言 ConcurrentHashMap(简称CHM)是在Java 1.5作为Hashtable的替代选择新...

    kun_jian 评论0 收藏0
  • 这几道Java集合框架面试题在面试中几乎必问

    摘要:若遇到哈希冲突,则将冲突的值加到链表中即可。之后相比于之前的版本,之后在解决哈希冲突时有了较大的变化,当链表长度大于阈值默认为时,将链表转化为红黑树,以减少搜索时间。有序,唯一红黑树自平衡的排序二叉树。 本文是最最最常见Java面试题总结系列第三周的文章。主要内容: Arraylist 与 LinkedList 异同 ArrayList 与 Vector 区别 HashMap的底层...

    bigdevil_s 评论0 收藏0
  • HashMap ConcurrentHashMap

    摘要:与中的类似,也是一个数组加链表,不过这个线程安全。线程安全,但是它的线程安全是依赖将所有修改的代码块都用修饰。这是中实现线程安全的思路,由个组成,每个就相当于一个数组链表。线程安全,但性能差,不推荐使用。 问题描述 翻翻别人的面试经历 这里在知乎上看到的,分享出了自己面试阿里Java岗的面试题。 showImg(https://segmentfault.com/img/bVbfSZ5?...

    forrest23 评论0 收藏0
  • 周末去面试,进去 5 分钟就出来了…

    摘要:记得,那是一个周末,栈长去某知名互联网公司面试,好像不到五分钟,我就被面试官亲切地赶出来了,当时我那个尴尬,内心深受打击。。。 你们可能会想,栈长这么菜的吗?5分钟都坚持不了? 本文说起来会有点尴尬,毕竟这是栈长我曾经经历过的故事。。。 那时候的栈长还真菜,每天写着 if/ for 及一些简单的业务逻辑代码,虽工作有些日子了,但技术水平还停留在刚毕业的起步阶段。。。 记得,那是一个周末...

    pf_miles 评论0 收藏0
  • Java容器类研究9:其它Map

    摘要:和的区别和的区别是,在操作的方法上加入关键字,使得线程安全。使用进行比较,或者传入的比较器。基于,它自己的任务主要是维护保持顺序的双向链表。和的区别提供了一个高效的线程安全的访问和更新的方式。在中的过程和类似。 HashTable和HashMap的区别 HashTable和HashMap的区别是,HashTable在操作table的方法上加入synchronized关键字,使得线程安全...

    zilu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<