java1.7及以前
hashmap是entry的数组+链表
concurrenthashmap是若干(16)个segment组成,每个segment都是继承了ReentrantLock的一个hashmap类型的结构
java1.8及以后
hashmap中的链表结构当数量大于等于8时会转为红黑树,为了增加查找效率(logn + 转化为树的时间 < 平均遍历时间n/2)
为什么不直接采用红黑树
插入需要左旋右旋,成本高。
concurrenthashmap结构类似hashmap,采用synchronized(对每个node上锁)和cas控制线程安全