zoukankan      html  css  js  c++  java
  • HashMap,,ConcurrentHashMap------------------浅谈!!

    没啥读到的见解,这个文章纯粹是学习Hash的时候的笔记罢了!!!

    之前一直觉得既然HashMap能用为啥还要出现HashTable,TreeMap,ConcurrentHashMap等等这些链表来存储数据。

    hashMap 写入慢,读取快。因为hashMap全程在写入的时候要考虑到值是否存在 还要涉及到table扩容,所以写入的时候由于步骤相对较多,导入写入较慢,

    但读取的时候只需要根据key来查找就好,所以读取非常块。但是因为hashMap的方法都没有考虑线程安全 这也是他的有点,由于不需要考虑线程 所以就不

    要加入锁机制。没有等待,所以在单线程中hashMap的读取是很快的。但也是缺点,由于没有考虑并发,所以当同时对hashMap写入的时候,且需要扩容链表的时候就会出现并发。是个头疼的问题。

    ConcurrentHashMap 不但读取块,而且还能保证线程安全,很厉害啊。因为concurrentHashMap中用到了大量的线程安全关键字 而且还继承了ReentrantLock类,

    重点是基于线程安全的情况下也能做到读取的速度非常快,是因为concurrentHashMap中采用Segment(段)的技术,每个segment都有自己对应的锁 而concurrentHashMap

    中的segment是个数组,每个segment都是一个链表,当针对一个segment操作时 是不影响其他的segment操作的,而且每个segment都有自己的锁。所以在一个segment内

    操作可以保证线程安全,而且由于segment是个数组,可以同时并行的操作多个segment内的数据 这点又保证了读取的数度不会因为线程安全的原因影响了!!!!

  • 相关阅读:
    += 和 =+
    Ubuntu分区方案(菜鸟方案、常用方案和进阶方案)
    Apache ab测试工具使用方法(无参、get传参、post传参)(转)
    硬盘安装ubuntu遇到的问题
    Promise
    A Kill Cord for your Laptop
    python 2week
    PDCA循环原理
    python自学基础1week
    14链表中倒数第k个结点
  • 原文地址:https://www.cnblogs.com/culushitai/p/8650404.html
Copyright © 2011-2022 走看看