2019独角兽企业重金招聘Python工程师标准>>>

集合类是Java API的核心,但是我觉得要用好它们是一种艺术。我总结了一些个人的经验,譬如使用ArrayList能够提高性能,而不再需要过时的Vector了,等 等。JDK 1.5引入了一些好用的并发集合类,它们对于大型的、要求低延迟的电子商务系统来说非常的有用。这篇文章中将会看看ConcurrentHashMap和 Hashtable之间的区别。

这篇文章是HashMap的工作原理以及HashMap和Hashtable的区别的后续。如果你已经读过的话,那么我相信你读完本篇之后会有所收获。

为什么我们需要ConcurrentHashMap和CopyOnWriteArrayList

同步的集合类(Hashtable和Vector),同步的封装类(使用Collections.synchronizedMap()方法和 Collections.synchronizedList()方法返回的对象)可以创建出线程安全的Map和List。但是有些因素使得它们不适合高并 发的系统。它们仅有单个锁,对整个集合加锁,以及为了防止ConcurrentModificationException异常经常要在迭代的时候要将集 合锁定一段时间,这些特性对可扩展性来说都是障碍。

ConcurrentHashMap和CopyOnWriteArrayList保留了线程安全的同时,也提供了更高的并发性。 ConcurrentHashMap和CopyOnWriteArrayList并不是处处都需要用,大部分时候你只需要用到HashMap和 ArrayList,它们用于应对一些普通的情况。

ConcurrentHashMap和Hashtable的区别

Hashtable和ConcurrentHashMap有什么分别呢?它们都可以用于多线程的环境,但是当Hashtable的大小增加到一定的 时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。因为ConcurrentHashMap引入了分割(segmentation),不论它变得多 么大,仅仅需要锁定map的某个部分,而其它的线程不需要等到迭代完成才能访问map。简而言之,在迭代的过程中,ConcurrentHashMap仅 仅锁定map的某个部分,而Hashtable则会锁定整个map。

转载于:https://my.oschina.net/u/1412027/blog/203180

ConurrentHashMap和Hashtable的区别相关推荐

  1. ConcurrentHashMap 和 Hashtable 的区别

    ConcurrentHashMap 和 Hashtable 的区别主要体现在实现线程安全的方式上不同. 1.底层数据结构: JDK1.7的 ConcurrentHashMap 底层采用 分段的数组+链 ...

  2. Java——集合(HashMap与Hashtable的区别)

    * HashMap和Hashtable的区别* 共同点:* 底层都是哈希算法,都是双列集合* 区别:* 1,HashMap是线程不安全的,效率高* Hashtable是线程安全的,效率低 * 2,Ha ...

  3. JAVA面试题:HashMap和Hashtable的区别

    HashMap和Hashtable的区别 1.共同点:都是双列集合,底层都是哈希算法 2.区别: * 1.HashMap是线程不安全的,效率高,JDK1.2版本 * Hashtable是线程安全的,效 ...

  4. HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别...

    面试题: 1.HashMap和Hashtable的区别?HashMap:线程不安全,效率高,键和值都允许null值Hashtable:线程安全,效率低,键和值都不允许null值ArrayList代替V ...

  5. 面试题:ConcurrentHashMap 和 Hashtable 的区别

    面试题:ConcurrentHashMap 和 Hashtable 的区别 关键词 1.8ConcurrentHashMap 只锁 首节点 ConcurrentHashMap 和 Hashtable ...

  6. 18.集合框架(Map集合,HashMap和Hashtable的区别,Collections(集合工具类),集合练习,模拟斗地主(洗牌,发牌,看牌))

    1.Map集合概述和特点 1.需求:    根据学号获取学生姓名 2.Map接口概述     查看API可以知道:     将键映射到值的对象     一个映射不能包含重复的键     每个键最多只能 ...

  7. JAVA 映射HashMap和HashTable的区别和实用

    JAVA 映射HashMap和HashTable的区别和实用 /*  * @author Mr liu  *   * 基本格式:HashMap<key,vaule>  * 面试题  * H ...

  8. hashmap的特性?HashMap底层源码,数据结构?Hashmap和hashtable ConcurrentHashMap区别?

    1.hashmap的特性? 允许空键和空值(但空键只有一个,且放在第一位) 元素是无序的,而且顺序会不定时改变 key 用 Set 存放,所以想做到 key 不允许重复,key 对应的类需要重写 ha ...

  9. 高薪程序员面试题精讲系列36之说说HashMap与HashTable的区别有哪些?

    一. 面试题及剖析 1. 今日面试题 HashMap与HashTable的区别有哪些? hash一致性算法了解吗?原理是什么?底层怎么实现的? ....... 2. 题目剖析 今天这道题目,考察的还是 ...

  10. java HashMap 与HashTable的区别

    HashMap 与HashTable的区别 HashMap与Hashtable的区别是面试中经常遇到的一个问题.这个问题看似简单,但如果深究进去,也能了解到不少知识.本文对两者从来源,特性,算法等多个 ...

最新文章

  1. 下java7 64有什么用_Win 7 64位系统安装java 8,看完就明白了
  2. 超长整数相加 c语言类,二个超长正整数的相加
  3. Android QEMU 高速管道
  4. Ubuntu下selenium+Chrome的安装使用
  5. Spring4.0之四:Meta Annotation(元注解)
  6. DPDK 16.04/16.11.2 默认tx offload是关闭的引起tx vlan offload无效
  7. 苹果电脑查看python版本_Mac 如何修改系统默认 Python 版本?
  8. web前端小故事(浏览器大战)
  9. 1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
  10. 数据仓库分层设计思想
  11. zemax中如何和matlab中通信,如何在ZEMAX及MATLAB之间通信.doc
  12. android前置拍照镜像代码,从Android的前置摄像头拍摄的镜像翻转视频
  13. 2021全国高校计算机能力挑战赛程序设计赛Python组区域赛(初赛)试题及部分个人解答
  14. No suitable context info for active keying set问题(已解决)
  15. 怎么让抖音快速涨粉之抖音数据分析
  16. 小写数字转换成大写数字
  17. GlobalMapper20转换KML为GeoJson,保留名称
  18. c++ opencv 身份证OCR识别:前期数据训练库准备(tesseractOCR)
  19. 反病毒利器Autoruns和ProcessExplorer, SREng - 本人推荐使用的查毒杀毒辅助工具
  20. mysql函数之日期函数

热门文章

  1. linux7不能使用yum,CentOS7.6无法使用yum命令,无法更新解决方法
  2. python异步教程_Python开发异步任务Celery的使用教程!
  3. php mysql统计去掉重复的,php - Mysql:根据最小数量删除重复记录 - 堆栈内存溢出...
  4. java断言的例子_Java 8 谓词/断言的例子
  5. 初识flume-介绍
  6. 关于代码审查的几点建议
  7. Message Code 【27796】 Failed to connect to server 'hostname';port_ld': 'reason'.
  8. 基于用户点击行为的数字图书搜索系统研究与实现 - 中国优秀硕士学位论文全文数据库...
  9. 电脑上没有iis组件,怎么才能安装iis?
  10. pythonjson构建二维数组_在Python中从JSON构建表