老师,在多线程中HashMap是线程不安全的,但是从内部结构我不太清楚为什么,网上都是直接说HashMap是非synchronized
来源:3-3 线程安全性-原子性-synchronized
![](http://img1.sycdn.imooc.com/user/5333a1360001954902000200-100-100.jpg)
橙子先生0_0
2018-03-21
但是,我自己的理解是当HashMap中的数据超过了负载因子定义的容量,默认的负载因子大小为0.75,也就是说,当一个map填满了75%的,会扩容当前空间的一倍,然后将数据重新拷贝到大的空间中,那么在多线程的情况下,是不是HashMap扩容之后,另外一个线程进来了又扩容一次,重复的将小空间的数据拷贝到扩容后的空间,这样导致数据重复
写回答
2回答
-
你好,扩容不是这么简单,极端情况下可能出现可怕的循环列表,多线程环境下多个线程同时处理HashMap的实例很容易出现问题。
关于HashMap,我在并发编程这块的结尾部分做了详细的图例演示和讲解,这周更新的内容里差不多可以包含进来,你可以带着问题细看一下这个扩容。
如果不懂的话,我们再继续讨论一下。
祝你学习愉快~
012018-03-21 -
loubobooo
2018-04-01
我觉得你思考的也对,多线程下确实会导致数据重复
00
相似问题