HashMap 为什么线程不安全?
先自己想一想,再看参考要点
参考要点
- 两个线程同时向同一个空桶插入,后写的覆盖先写的,size++ 也不是原子操作,8 个线程各插 10 万个键 size 远少于 80 万
- JDK 1.7 并发扩容时头插法可能让链表成环,get 死循环
- JDK 1.8 改为尾插法,但仍会丢数据,转红黑树时还可能破坏树结构
- 多线程用 ConcurrentHashMap
参考要点
学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。