1. jdk1.7以及之前

  ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成

  通俗的话讲:就是首先将数据分为一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据时,其他段的数据也能被其他线程访问。

  示意图:

    

2. JDK1.8

  ConcurrentHashMap取消了Segment分段锁,采用CAS和synchronized来保证并发安全。

  数据结构跟HashMap1.8的结构类似,数组+链表/红黑二叉树。

  synchronized只锁定当前链表或红黑二叉树的首节点,这样只要hash不冲突,就不会产生并发,效率又提升N倍。

 示意图:

  

最新文章

  1. [转]as3 算法实例【输出1 到最大的N 位数 题目:输入数字n,按顺序输出从1 最大的n 位10 进制数。比如输入3,则输出1、2、3 一直到最大的3 位数即999。】
  2. spring hibernate摘记
  3. [自制简单操作系统] 2、鼠标及键盘中断处理事件[PIC\GDT\IDT\FIFO]
  4. YTU 2607: A代码填空题--更换火车头
  5. Leetcode 102. Binary Tree Level Order Traversal(二叉树的层序遍历)
  6. jersey REST的接口简述
  7. HDU 4283 You Are the One
  8. Ubuntu下使用虚拟机安装Windows XP(sunvirtualbox)
  9. Tenured 区并发垃圾回收器CMS介绍
  10. Vue列表过渡
  11. python使用上下文管理器实现sqlite3事务机制
  12. Android开发PreferenceActivity 用法的代码
  13. nuget包管理nuget服务器发布包时出现请求报错 406 (Not Acceptable)
  14. poj1456
  15. phpcms公共函数库 总结
  16. 【oracle入门】数据库系统范式
  17. python 操作记事本
  18. [UE4]枚举Enum和Switch Enum
  19. 项目抛弃Tomcat容器,用代码启动Tomcat插件
  20. 杭电OJ1789、南阳OJ236(贪心法)解题报告

热门文章

  1. jquery网页定位导航特效
  2. sklearn中pipeline的用法和FeatureUnion
  3. Neo4j和Elasticsearch
  4. Selenium(二)---无界面模式+滑动底部
  5. java实现数字转中文大写
  6. [转载]Spring AOP 深入剖析
  7. SpringMVC向前台传输 JSON数据
  8. nginx 知识
  9. Yii2 使用 npm 安装的包
  10. Windows exit