HashMap,,ConcurrentHashMap------------------浅谈!!

Posted 粗鲁师太

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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内的数据 这点又保证了读取的数度不会因为线程安全的原因影响了!!!!

 

以上是关于HashMap,,ConcurrentHashMap------------------浅谈!!的主要内容,如果未能解决你的问题,请参考以下文章

Java中的数据结构-HashMap

HashMap详解

HashMap详解

hashmap性能跟数据量关系

为啥面试要问hashmap 的原理

HashMap 概述