生活知识
生活知识
数码知识
教育知识
汽车知识
游戏知识
办公知识
装修知识
旅游知识
搜索

数码知识分类 数码百科 电脑知识 手机知识 APP应用 电脑操作 更多 中文DJ 英文DJ 车载DJ 视频DJ

hashmap为什么是线程不安全的 hashmap什么情况下线程不安全

日期:2022-12-05 10:06:05人气:17

导读:hashmap为什么是线程不安全的:最佳答案JDK1.7中,由于多线程对HashMap进行扩容,调用了HashMap,当某个线程执行过程中,被挂起,其他线程已经完成数据迁移,等CPU资源释放后被挂起的线程重新执行之前的逻辑,数据已经被改变,造成死循环、数据丢失。假设两个线程A、B都在进行put操作,此时不会再进行判断,而是直接进行插入,这就导致了线程B插入的数据被线程A覆盖了,从而线程不安全。

hashmap为什么是线程不安全的 hashmap为啥不是线程安全的

演示机型:华为MateBook X系统版本:win10

1、JDK1.7中,由于多线程对HashMap进行扩容,调用了HashMap,当某个线程执行过程中,被挂起,其他线程已经完成数据迁移,等CPU资源释放后被挂起的线程重新执行之前的逻辑,数据已经被改变,造成死循环、数据丢失。

2、JDK1.8 中,由于多线程对HashMap进行put操作,调用了HashMap,假设两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的,当线程A执行完第六行代码后由于时间片耗尽导致被挂起,而线程B得到时间片后在该下标处插入了元素,完成了正常的插入,然后线程A获得时间片,由于之前已经进行了hash碰撞的判断,所有此时不会再进行判断,而是直接进行插入,这就导致了线程B插入的数据被线程A覆盖了,从而线程不安全。

广告位1

声明: 本站所有文章来自互联网搜索结果, 如果侵犯到你的权益 请提供版权证明来信告知,我们会在3个工作日之内删除 本站为非赢利性网站 不接受任何赞助和广告

Copyright 2022-2023 32h.pingguodj.com 32号百科 客服邮箱:s2s2s2-s@outlook.com