`
Tristan_S
  • 浏览: 362328 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hashtable ConcurrentHashMap 区别

 
阅读更多


ConcurrentHashMap 中的segment继承了ReentrantLock, 其中有很多lock()和unlock()方法。
我们只要用了ConcurrentHashMap  就会间接的用到ReentrantLock

-----------------------------------

http://blog.csdn.net/liuzhengkang/article/details/2916620
两者都是线程安全的集合

Hashtable 对所有方法都加上了synchronized,性能比较差。
ConcurrentHashMap
而右边则是ConcurrentHashMap的实现方式---锁桶segment(或段)。ConcurrentHashMap将hash表分为16个桶(默认值),诸如get,put,remove等常用操作只锁当前需要用到的桶。试想,原来只能一个线程进入,现在却能同时16个写线程进入(写线程才需要锁定,而读线程几乎不受限制,之后会提到),并发性的提升是显而易见的。

    public V put(K key, V value) {
        if (value == null)
            throw new NullPointerException();
        int hash = hash(key.hashCode());
        return segmentFor(hash).put(key, hash, value, false);
    }
分享到:
评论

相关推荐

    HashTable、ConcurrentHashMap.pdf

    HashTable、ConcurrentHashMap.pdf

    HashMap,HashTable,ConcurrentHashMap之关联.docx

    HashMap,HashTable,ConcurrentHashMap之关联.docx

    hashmap和hashtable的区别.docx

    hashmap和hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。...Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。

    Java并发编程笔记之ConcurrentHashMap原理探究.docx

    HashTable是一个线程安全的类,它使用...ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的Hashtable,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。

    ConcurrentHashMap源码分析

    ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable。

    Java并发编程之ConcurrentHashMap

    ConcurrentHashMap是一个线程安全的HashTable,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的...

    Java集合框架完整说明便于了解集合

    HashMap 和 Hashtable 的区别,HashSet如何检查重复,HashMap的底层实现,HashMap 多线程操作导致死循环问题,ConcurrentHashMap 和 Hashtable 的区别,ConcurrentHashMap线程安全的具体实现⽅式/底层具体实现,...

    leetcode下载-study:学习笔记

    leetcode下载 目录 操作系统 虚拟内存与物理内存转化 CPU 调度方式 进程栈大小 进程与线程区别 线程状态 网络 ...HashTable ConcurrentHashMap JAVA IO Go Redis Redis Cluster Redis 持久化方式 Redis

    leetcode题库-java-interview:Java研发基础相关

    ConcurrentHashMap 详解 异常相关 代理机制 JDBC BIO NIO AIO 创建类的方法 final finally finalize 反射 序列化与反序列化 transient 枚举 注解 JDK7新特性 JDK8新特性 JDK9新特性 JDK10新特性 运行时数据区 对象 ...

    HashMap-面试必过

    1.说一下 HashMap 的实现原理? 2.HashMap在JDK1.7和JDK1.8中有哪些不同?HashMap的底层实现? 3.HashMap的put方法的具体流程? 4.HashMap的扩容操作是怎么实现的?...18.ConcurrentHashMap 和 Hashtable 的区别?

    java_各个Map的区别

    java_各个Map的区别 ConcurrentHashMap 支持检索的完全并发和更新的所期望可调整并发的哈希表。(线程安全)此类遵守与 Hashtable 相同的功能规范,并且包括对应于 Hashtable 的每个方法的方法版本。不过,尽管所有...

    JavaSE基础面试题.docx

    17.HashMap、Hashtable、ConcurrentHashMap底层实现原理及区别 18.HashMap底层数据结构 19.说说HashMap如何处理碰撞的,或者说说它的扩容? 20.jdk7/8中对HashMap做了哪些改变? 21.负载因子为什么会影响HashMap性能...

    01java基础-集合知识点详解.xlsx

    就是一些通用java集合知识点整理,ArrayList LinkedList,HashMap,HashTable ,ConcurrentHashMap,HashSet,LinkedHashSet类通过线程安全否: 底层: 初始值: 扩容 : 区别(对比优势) 图解

    java8源码-putaoo.github.io:putao.github.io

    java8 源码 目录 Java 基础 容器 并发 JVM I/O Java ...(String和StringBuffer、StringBuilder的区别是什么?...区别、HashMap的底层实现、HashMap ...的区别、ConcurrentHashMap线程安全的具体实现方式/底层具体实现、集

    java8源码-java-start::seedling::seedling::seedling:学习Java语法过程中的一些案例

    java8 源码 目录 Java 基础 容器 并发 JVM I/O Java ...(String和StringBuffer、StringBuilder的区别是什么?...的区别、ConcurrentHashMap线程安全的具体实现方式/底层具体实现、集合框架底层数据结构总结

    【面试系列】并发容器之ConcurrentHashMap

    Hashtable 本身比较低效,因为它的实现基本就是将 put、get、size 等各种方法加上 synchronized 锁。这就导致了所有并发操作都要竞争同一把锁,一个线程在进行同步操作时,其他线程只能等待,大大降低了并发操作的...

    Java面试题-并发.docx

    此外,文档介绍了哈希冲突的概念和解决方法,以及HashMap的查询流程和与Hashtable的区别。特别强调了Hashtable不允许插入null的原因,以及ConcurrentHashMap在线程安全实现和锁优化方面的策略。 总的来说,这份文档...

    Java面试题-哈希.docx

    此外,文件介绍了哈希冲突的概念和解决方法,以及HashMap的查询流程和与Hashtable的区别。特别强调了Hashtable不允许插入null的原因,以及ConcurrentHashMap在线程安全实现和锁优化方面的策略。 总的来说,这份文件...

    Java面试题大汇总,2023最新面试题及答案汇总.txt,免费下载

    什么是“依赖注入”和“控制反转”?为什么有人使用? ArrayList 和 LinkedList 的区别是什么? 观察者模式应用场景 Array与ArrayList有什么不一样 实例化数组后,能不能... ConcurrentHashMap 和 Hashtable 的区别

Global site tag (gtag.js) - Google Analytics