HashMap为什么线程非安全
首先,先说明在多线程环境下使用HashMap会产生的问题:
- resize死循环,扩容(1.8已解决)
- 数据丢失、数据覆盖
JDK1.7时,HashMap采用头插法连接链表中的元素,在多线程环境下会产生闭环,所以会导致死循环
JDK1.8中,HashMap采用尾插法连接链表元素,解决了死循环的问题,但是在多线程环境下还会产生数据覆盖,丢失问题
首先,先说明在多线程环境下使用HashMap会产生的问题:
JDK1.7时,HashMap采用头插法连接链表中的元素,在多线程环境下会产生闭环,所以会导致死循环
JDK1.8中,HashMap采用尾插法连接链表元素,解决了死循环的问题,但是在多线程环境下还会产生数据覆盖,丢失问题