美文网首页
集合知识储备

集合知识储备

作者: 詠遠鍀飛哥 | 来源:发表于2019-03-05 14:09 被阅读0次

一.HashMap VS Hashtable

1.HashMap 是非线程安全的,Hashtable 是线程安全的;
2.HashMap 是能接受null 键值对的 默认null键 哈希值是0,Hashtable不能接受空键值对;
3.HashMap 的迭代器是(fail-fast)迭代器, Hashtable是fail-safe迭代器;
4.HashMap 在java5提共了ConcurrentHashMap,是安全的HashMap 也是 Hashtable的替代品,具有更好的扩展性, java5以下首选Hashtable;
备注:
HashMap可以通过下面的语句进行同步:Map m = Collections.synchronizeMap(hashMap);
fail-fast:直接在容器上进行遍历,在遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException异常导致遍历失败。
fail-safe:这种遍历基于容器的一个克隆。因此,对容器内容的修改不影响遍历。
5.ConcurrentHashMap

1.ConcurrentHashMap是使用了锁分段技术来保证线程安全的。(将数据分成一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候,其他段的数据也能被其他线程访问)
2.ConcurrentHashMap提供了与Hashtable和SynchronizedMap不同的锁机制。Hashtable中采用的锁机制是一次锁住整个hash表,从而在同一时刻只能由一个线程对其进行操作;而ConcurrentHashMap中则是一次锁住一个桶。
3.ConcurrentHashMap默认将hash表分为16个桶,诸如get、put、remove等常用操作只锁住当前需要用到的桶。这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。

相关文章

  • 集合知识储备

    一.HashMap VS Hashtable 1.HashMap 是非线程安全的,Hashtable 是线程安...

  • 大话Java持久层

    基础知识储备: Java SE(Java语言【java.lang】、Java集合框架【java.util】) Ja...

  • 知识储备

    我并不知道气垫车究竟长什么样子,于是我便直接去询问,并没有问那种不规则的东西的尺寸。直到后来我的同事提醒我说,请记...

  • 储备知识

    茶文化 酒文化 点菜文化

  • 知识储备

    我学过的课程学过的知识包括梦中学过的内容都已经融汇到我的思想里 分不清楚 这也算是智慧的提炼 和大家罗列我所学的 ...

  • 知识储备

    入职了家新公司,氛围挺好的。公司晨会、午休醒来都会玩下游戏,醒醒神这样子,什么你画我猜、你演我猜、狼人杀、谁是卧底...

  • 知识储备

    Promise Promise.all promise1和promise2都成功才会调用success1 Prom...

  • 知识储备

    “有趣”则是各种能力在人格魅力上的外显,是知识储备能力、信息管理能力、感知力、鉴赏力、想象创新能力等组合作用下的产...

  • 储备知识

    知识的欠缺往往容易让人认知狭隘,看待问题时一叶障目,很难做出正确的选择。储备好知识,视野更开阔,当选择来临时,就能...

  • iOS开发中的静态库和动态库

    知识储备: 一.库(Library) 什么是库? 库是程序代码的集合,是程序共享代码的一种方式。根据源代码的公...

网友评论

      本文标题:集合知识储备

      本文链接:https://www.haomeiwen.com/subject/fnoruqtx.html