没啥读到的见解,这个文章纯粹是学习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

HashMap,,ConcurrentHashMap------------------浅谈!!相关推荐

  1. 浅谈HashTable, HashMap, ConcurrentHashMap 之间的区别

           大家好,今天为大家带来新的知识,  HashTable, HashMap, ConcurrentHashMap 之间的区别                                ...

  2. 浅谈HashMap(一)

    小生近来翻看HashMap的源码,颇有些领会.借此机会,聊以共享.小生才疏学浅,文中如有不妥之处,望各位看官不吝赐教.小可拜谢! 本文将从以下几个方面,浅谈HashMap HashMap的数据结构 H ...

  3. 浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁

    浅谈JUC的常用类 JUC就是java.util.concurrent-包下的类 回顾多线程 Java默认有几个线程? 2 个 mian.GC Java 真的可以开启线程吗? 开不了,点击源码得知:本 ...

  4. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  5. 浅谈数据结构和数据类型

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012540337/article/details/80499226 最近总是被这两个概念混淆,抽出 ...

  6. 浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除

    浅谈:MyBatis-Plus的CRUD与乐观锁,分页插件,逻辑删除 MyBatis-Plus官方文档连接 什么是MyBatis-Plus 请点击上面官方文档查看 代码演示:代码注释为功能详细解释 数 ...

  7. jquery ajax和servlet,浅谈ajax在jquery中的请求和servlet中的响应

    在jsp中,首先,你需要导入jquery的架包: 获取可返回站点的根路径: String path = request.getContextPath(); %> 在jquery中写ajax请求: ...

  8. JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)

    如果你还不清楚 JackHttp 是什么,请戳这里!!! JackHttp 是一个网络框架系列,为什么还要分享编码和加密呢?主要有如下几个原因: HTTP 在网络传输过程中是明文的. HTTP 在网络 ...

  9. 编程浅谈-以一个初出茅庐的Java程序员视角

    编者是一个从事Java开发的普通软件攻城狮,迄今为止,粗粗算来不过刚刚进入编程的世界不过两年,但在这两年的光阴里,每当我抬头仰望星空(苦命加班)时脑海里总有这样一个疑问--"什么是编程&qu ...

  10. 后端系统的缓存使用浅谈

    作者 | 周明岐 杏仁医生后端负责人,中青年码农,关注 Scala / Go 和团队成长. 1. 什么是缓存 缓存有很多种,从 CPU 缓存.磁盘缓存到浏览器缓存等,本文所说的缓存,主要针对后端系统的 ...

最新文章

  1. 旷视冲刺科创板IPO获通过!距离上市仅一步之遥,拟募资60.18亿
  2. Python3.7实现socket多线程通信
  3. 运用El表达式截取字符串/获取list的长度
  4. The world at your fingertips — 天涯明月刀幕后24(疏离)
  5. 静态时序分析——多周期、半周期和伪路径
  6. git 忽略 部分文件夹_git设置忽略文件和目录
  7. 【转】什么是SIEM?
  8. Windows 系统中 Python下 Pygame 的安装
  9. binlog日志_mysql 重要日志文件总结
  10. android studio放置在函数上面看_像写Flutter一样开发Android原生应用
  11. linux yum 目录在哪,急问怎么知道yum从哪个地址下载的文件呢?
  12. 使用artTemplate模板将json转换为html页面
  13. 静态库与动态库的制作
  14. C++11中的原子操作(atomic operation)
  15. 北大中文核心期刊目录(部分)
  16. C++宠物商店管理系统
  17. 技术面试(一)认识技术面试
  18. 【PytorchLearning】构建自己的数据集
  19. np.meshgrid函数中的indexing参数问题
  20. Spring包含JAR的详解

热门文章

  1. 【渝粤教育】国家开放大学2018年春季 0704-22T民法基础与实务 参考试题
  2. 【渝粤教育】国家开放大学2018年春季 0047-21T计算机办公软件应用 参考试题
  3. 2017北理复试机试题
  4. phpMyAdmin源码配置过程
  5. 深度强化学习中实验环境-开源平台框架汇总
  6. 原子操作--sync/atomic的用法
  7. 计蒜客:区间整数操作-区间更新-区间和
  8. Android 常见 Memory Leak 原因及解决办法总结
  9. c#设计模式之简单工厂
  10. PHP下SESSION无法跨页传递的解决