Jdk8 Hashmap ConcurrentHashMap

 

JDK1.8 Hashmap

 

 

 

 JDK1.8 ConcurrentHashMap

 

  1. 不采用segment而采用 synchronized (f)  f = table[i]; 减小锁的力度
  2. 设计了MOVED状态 当resize的中过程中 线程2还在put数据,线程2会帮助resize。
  3. 使用3个CAS操作来确保node的一些操作的原子性,这种方式代替了锁。
  4. sizeCtl的不同值来代表不同含义,起到了控制的作用。

 

 

 

 

 

 

 

 

 

 

 

参考  http://www.importnew.com/28263.html 和 JDK1.8 HashMap, ConcurrentHashMap 源代码

 

posted @ 2019-04-01 22:47  webglcn  阅读(138)  评论(0编辑  收藏  举报