concurrenthashmap jdk7 ReEntryLock + Segment + Hashentry并发度 就是segment的个数第一次hash的时候定位到segment,第二次hash定位到元素所在的链表get方法无需加锁,通过volatile来保证不会读到脏数据 jdk8 synchronized + CAS +Node + 红黑树CAS 是一个乐观锁 ,消息更高Node 的value 和 next 都是用volatile 来修饰,来保证可见性替换,查找,和赋值都是用CAS锁的粒度更小,只锁住head节点,也就是数组的一个位置扩容的时候,阻塞所有的东西操作,并发的进行扩容