HashMap和ConcurrentHashMap

总结:

1 jdk1.8 ConcurrentHashMap实现降低锁的粒度,jdk 1.7版本锁的粒度是基于Segement的,包含多个HashEntry,而jdk 1.8锁的粒度就是HashEntry(首节点)

2 jdk 1.8版本数据结构变得更加简单,使得操作更加清晰,因为使用synchronized进行同步,所以不需要分段锁的概念,也就不需要segment这种数据结构了,由于粒度降低,复杂度也增加了

3 jdk 1.8使用红黑树来优化链表,基于红黑树的便利效率很快,代替一定的阈值链表.

4 jdk1.8使用内置锁synchronized来代替冲入锁:

        因为锁的粒度降低,相对而言synchronized并不比ReentrantLock差,在粗粒度中加锁ReentrantLock可能通过Condition来控制各低粒度的边界,更加灵活,而在低粒度中,Condition的优势就没有了.

        基于jvm的synchronize关键字优化空间更大,使用内嵌的关键字比使用api更加自然

        在大量数据操作下,对JVM内存的压力,API的RenetrantLock会开销更多的内存,虽然不是瓶颈,但也是一个选择依据

 

posted @ 2018-09-10 09:33  寅辰  阅读(80)  评论(0)    收藏  举报