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会开销更多的内存,虽然不是瓶颈,但也是一个选择依据

浙公网安备 33010602011771号