concurrenthashmap1.8优化

1. JDK1.8取消了segment数组,直接用table保存数据,锁的粒度更小,减小并发冲突的几率。数组

2. 1.8存储数据时采用了链表+红黑树的形式,纯链表的形式时间复杂度为O(n),红黑树则为O(logn),性能提高很大。何时链表转红黑树?当key值相等的元素造成的链表中元素个数超过8个的时候。数据结构

3. 1.8的实现下降锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含多个HashEntry,而JDK1.8锁的粒度就是HashEntry(首节点)并发

4. 1.8版本的数据结构变得更加简单,使得操做也更加清晰流畅,由于已经使用synchronized来进行同步,因此不须要分段锁的概念,也就不须要Segment这种数据结构了,因为粒度的下降,实现的复杂度也增长了性能

5. 1.8使用红黑树来优化链表,基于长度很长的链表的遍历是一个很漫长的过程,而红黑树的遍历效率是很快的,代替必定阈值的链表,这样造成一个最佳拍档优化

相关文章
相关标签/搜索