博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashMap,,ConcurrentHashMap------------------浅谈!!
阅读量:5103 次
发布时间:2019-06-13

本文共 778 字,大约阅读时间需要 2 分钟。

没啥读到的见解,这个文章纯粹是学习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内的数据 这点又保证了读取的数度不会因为线程安全的原因影响了!!!!

 

转载于:https://www.cnblogs.com/culushitai/p/8650404.html

你可能感兴趣的文章
windows服务程序
查看>>
HDU 1847 Good Luck in CET-4 Everybody! 博弈
查看>>
request,response,URL编码,路径专题
查看>>
Pydev encoding
查看>>
调整eclipse中tomcat的内存--加大
查看>>
软工1816 · 作业(六)团队选题报告
查看>>
iscroll双重滚动,向上滚动隐藏一部分,下拉后显示
查看>>
setsockopt 设置socket 详细用法
查看>>
六度空间理论---腾讯2012年4月笔试题
查看>>
paint方法
查看>>
沐风心扬C#编程速查系列之C#窗体渐显渐隐效果
查看>>
bzoj3208:花神的秒题计划I
查看>>
MySQL子查询慢现象的解决
查看>>
GitHub 第一坑:换行符自动转换
查看>>
ASP.NET 5 改名 ASP.NET Core 1.0
查看>>
Android Toast 封装,避免Toast消息覆盖,替换系统Toast最好用的封装
查看>>
JSON数据解析
查看>>
分组背包:金明的预算方案
查看>>
poj 1562 Oil Deposits(dfs)
查看>>
bzoj2751--[HAOI]2012容易题--组合(乘法原理)
查看>>