美文网首页
每日一题:HashMap为什么线程不安全?2020-06-30

每日一题:HashMap为什么线程不安全?2020-06-30

作者: 写代码的杰西 | 来源:发表于2020-06-30 16:20 被阅读0次

1.在jdk1.7中,在多线程环境下,扩容时会造成环形链或数据丢失。
2.在jdk1.8中,在多线程环境下,会发生数据覆盖的情况。
因为开始工作以后就是从1.8开始用的,这里只分析1.8的源码
HashMap的put方法中有这么一行

if ((p = tab[i = (n - 1) & hash]) == null) // 如果没有hash碰撞则直接插入元素
             tab[i] = newNode(hash, key, value, null);

如果经过hash计算以后的位置为null,就直接newNode插入到tab[i]的位置。
这里如果2个线程同时进入,同时计算,得到的结果都是null,然后同时newNode,那么第一个数据就会被覆盖。

相关文章

  • 2020-08-14:HashMap 和 HashTable 有

    前言 每日一题专栏 HashMap 和 HashTable 有什么区别? 一、 HashMap 是线程不安全的,H...

  • 每日一题:HashMap为什么线程不安全?2020-06-30

    1.在jdk1.7中,在多线程环境下,扩容时会造成环形链或数据丢失。2.在jdk1.8中,在多线程环境下,会发生数...

  • HashMap为什么是线程不安全的

    一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下...

  • 如何安全的使用HashMap

    为什么HashMap是不安全的 HashMap的线程不安全是由于它本身的机制造成的。HashMap的存储结构是由数...

  • 程序员之Map

    HashMap、HashTable、ConcurrentHashMap a.线程安全问题HashMap是线程不安全...

  • HashMap问答

    HashMap是不是线程安全? 不是线程安全的。 为什么不安全? 线程不安全的两个添加是,数据可共享、可修改。Ha...

  • Java源码分析集合相关

    建议看这几个链接,比较详细易懂 Java 8 HashMap源码分析 为什么HashMap线程不安全 HashMa...

  • [转]一文读懂HashMap

    本文准备从以下几个方面去讲解HashMap:1)HashMap源码详细分析2)HashMap为什么是线程不安全的?...

  • HashMap 与 ConcurrentHashMap

    HashMap 与 ConcurrentHashMap 一、背景: 线程不安全的HashMap:因为多线程环境下,...

  • Java并发-20.ConcurrentHashMap

    0. HashMap和HashTable HashMap线程不安全多线程下HashMap的put操作可能导致Ent...

网友评论

      本文标题:每日一题:HashMap为什么线程不安全?2020-06-30

      本文链接:https://www.haomeiwen.com/subject/cipxqktx.html