HashMap线程不安全导致的死循环和数据丢失
1.HashMap在扩容时由于线程安全问题产生死循环和数据丢失问题。
- 1.7之前采用头插法
- 1.8之后采用尾插法
采用尾插法只能解决循环问题,但是不能解决数据丢失问题,由于多线程访问,未加锁的情况下仍会发生数据丢失
https://blog.csdn.net/swpu_ocean/article/details/88917958
2.HashMap链表过长,导致查询效率低下
- 1.7之前是链表结构,由于数据过多,命中在同一个数组下标后导致链表过长,hash查询起不到效果,导致效率低下
- 1.8之后达到长度为8时,会自动转换成红黑树,解决查询效率问题。
https://blog.csdn.net/xiewenfeng520/article/details/107119970