JDK1.7的HashMap
jdk1.7的hashMap由 数组 + 单向链表 构成。
链表的节点是Entry,采用的是头插法,Entry节点中有next指针,指向下一个节点
JDK1.7的ConcurrentHashMap
jdk1.7的CHashMap(简称)为了解决hashMap线程不安全的问题,引入了分分段(Segment)锁的概念。
所以外层是segments[]数组,每次put的时候,首先根据key值计算存放的segments[]数组下标,如果该位置为null,还需要new一个新的segment对象存通过cas的方式放于此,保证线程安全。
segment中存放着数组+链表,这样的话多线程操作时,对这个segment加tryLock,这样能够保证在锁释放之前,其他的线程不会对同一个分段操作,保证操作时的线程安全。
【补充中。。】