Java的HashMap是非线程安全的,在多线程下应该使用ConcurrentHashMap。感谢Doug Lea老爷子的concurrent包。
为什么会发生死循环?(我觉得是这个链表头插法加上没有同步的控制造成的环)
主要还是因为HashMap的底层数据结构是数据+链表的结构,因为是链表,就有可能在多线程环境下形成闭合的链路(也就是一个环),这样只要有线程对这个HashMap进行get操作就会产生死循环,本文只分析是如何形成环的。
Java的HashMap是非线程安全的,在多线程下应该使用ConcurrentHashMap。感谢Doug Lea老爷子的concurrent包。
主要还是因为HashMap的底层数据结构是数据+链表的结构,因为是链表,就有可能在多线程环境下形成闭合的链路(也就是一个环),这样只要有线程对这个HashMap进行get操作就会产生死循环,本文只分析是如何形成环的。