Java集合(六一): ConcurrentHashMap问题汇总1、jdk1.7升级到1.8,ConcurrentHashMap的变化?2、CAS性能很高,为啥jdk1.8升级之后反而多了synchronized?3、Hashmap中链表大小超8个自动转为红黑树,当删除小于六时重新变为链表,为啥呢?4、为什么concurrentHashMap、Hashtable等不允许key/value为null呢?而HashMap可以呢? 2、什么是快速失败机制(fail-fast)呢?2.1快速失败机制(
1、jdk1.7升级到1.8,ConcurrentHashMap的变化?锁方面: 由分段锁(Segment继承自ReentrantLock)升级为 CAS+synchronized实现; 数据结构层面: 将Segment变为了Node,减小了锁粒度,使每个Node独立,由原来默认的并发度16变成了每个Node都独立,提高了并发度; hash冲突: 1.7中发生hash冲突采用链表存储,1.8中先使用链表存储,后面满足条件后会转换为红黑树来优化查询; 查询复杂度: jdk1.7中链表查询复杂度为.