码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-03-26 15:58:30      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:问题   tree   机制   原因   相对   数据   post   根据   纯粹   

没啥读到的简介,这个文章纯粹是学习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------------------浅谈!!

标签:问题   tree   机制   原因   相对   数据   post   根据   纯粹   

原文地址:https://www.cnblogs.com/culushitai/p/8650404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!