ConcurrentHashMap与HashMap区别?

单线程下的

多线程环境下,HashMap 为什么会出现死循环?

线程一执行指向5
线程二完全做完了
接下来线程一继续处理9 发现next指向5

接下来处理5是发现线程二9是指向5的

这就形成循环引用
ConcurrentHashMap

- java7 采用分段锁

- java8 链表长度8后转行红黑树
总结不同点
- HashMap允许key和value 为空 ConcurrentHashMap不允许
- HashMap非线程安全ConcurrentHashMap线程安全
- 使用iterator遍历HashMap同时做修改操作的ConcurrentHashMap是允许该行为的并且这个更新对后面的遍历是可见的