CS-Notes 学习笔记
Java 后端 · Java 容器

HashMap 为什么线程不安全?

先自己想一想,再看参考要点

参考要点

  • 两个线程同时向同一个空桶插入,后写的覆盖先写的,size++ 也不是原子操作,8 个线程各插 10 万个键 size 远少于 80 万
  • JDK 1.7 并发扩容时头插法可能让链表成环,get 死循环
  • JDK 1.8 改为尾插法,但仍会丢数据,转红黑树时还可能破坏树结构
  • 多线程用 ConcurrentHashMap
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。