ConcurrentHashMap解析-转载

文章目录
  1. 1. CAS与自旋锁
  2. 2. 如何控制并发
  3. 3. 添加数据:putVal()
  4. 4. 初始化数组:initTable()
  5. 5. 修改节点总数:addCount()
  6. 6. 扩容方案:transfer()

HashMap相关类:Hashtable、LinkHashMap、TreeMap | HuanBlog

深入解析ConcurrentHashMap:感受并发编程智慧 | HuanBlog

本次先简要讨论ConcurrentHashMap 顺便讨论下HashMap,HashTable这些Map的数据的结构,线程安全,在get,put部分的业务逻辑

ConcurrentHashMap : 是线程安全的主要是通过node来加锁,同时要结构是数组+链表,但是在1.7的版本是数组加链表 使用segemen的分块锁来完成

HashMap: 数据加链表 分为大概是 hash函数–hash冲突–扩容方案–线程安全的设计

HashTable: 1.2版本现在使用的少,它是基于synchronize对象来加锁的

fast-fail fail-safe

记录一个count在并发的操作和影响

最后我把深入解析ConcurrentHashMap:感受并发编程智慧 | HuanBlog的这篇文章总结下(jdk 1.8)

CAS与自旋锁

主要是在并发下处理

如何控制并发

添加数据:putVal()

初始化数组:initTable()

修改节点总数:addCount()

扩容方案:transfer()