多个线程对hashmap进行put操作的异常

Exception in thread "Thread-0" java.lang.ClassCastException: java.util.HashMap$Node cannot be cast to java.util.HashMap$TreeNodeat java.util.HashMap$TreeNode.moveRootToFront(HashMap.java:1832)at java.util.HashMap$TreeNode.treeify(HashMap.java:1949)at java.util.HashMap$TreeNode.split(HashMap.java:2175)at java.util.HashMap.resize(HashMap.java:714)at java.util.HashMap.putVal(HashMap.java:663)at java.util.HashMap.put(HashMap.java:612)at com.stono.thread3.page313.Thread1A.run(Thread1A.java:17)

源码:

package com.stono.thread3.page313;import java.util.HashMap;public class MyService1 {public HashMap<String, String> map = new HashMap<>();
}
package com.stono.thread3.page313;import com.stono.thread3.CusPrint;public class Thread1A extends Thread {private MyService1 service1;public Thread1A(MyService1 service1) {super();this.service1 = service1;}@Overridepublic void run() {for(int i=0;i<50000;i++) {service1.map.put("ThreadA"+(i+1), "ThreadA"+(i+1));CusPrint.print("ThreadA"+(i+1));}}
}
package com.stono.thread3.page313;import com.stono.thread3.CusPrint;public class Thread1B extends Thread {private MyService1 service1;public Thread1B(MyService1 service1) {super();this.service1 = service1;}@Overridepublic void run() {for(int i=0;i<50000;i++) {service1.map.put("ThreadB"+(i+1), "ThreadB"+(i+1));CusPrint.print("ThreadB"+(i+1));}}
}
package com.stono.thread3.page313;public class Test1_2 {public static void main(String[] args) {MyService1 service1 = new MyService1();Thread1A a = new Thread1A(service1);Thread1B b = new Thread1B(service1);a.start();b.start();}}

多个线程对hashmap进行put操作的异常相关推荐

  1. hashmap头插法和尾插法区别_Java程序员必知:HashMap进行put操作会不会引起死循

    HashMap进行put操作会引起死循环? 最近在磕<java并发编程艺术>,在看到第六章的时候出现了下面这段我不是很理解的东西,如下 <java并发编程艺术>截取 为什么要使 ...

  2. 面试02——线程、HashMap、、、

    一.线程相关 1.线程池原理,讲讲线程池里面的核心参数,你平时是怎么用线程池的 基本思想:预先创建多个线程对象,放入线程池,执行完后调用,用完还原到线程池. 优点: * 提高线程的利用率 * 提高程序 ...

  3. ITK:对多个线程上的数据进行操作以利用多核处理器

    ITK:对多个线程上的数据进行操作以利用多核处理器 ITK:对多个线程上的数据进行操作以利用多核处理器 内容提要 结果 C++实现代码 ITK:对多个线程上的数据进行操作以利用多核处理器 内容提要 内 ...

  4. Java中HashMap的常用操作

    Java中HashMap的常用操作 HashMap<Integer, Integer> hashMap = new HashMap<>();hashMap.put(5, 2); ...

  5. 两个子线程不冲突_多线程操作可见性

    可见性:让一个线程对共享变量的修改,能够及时的被其他线程看到,java中首先想到的就是volatile volatile关键字 Java内存模型中规定: 1.对某个volatile 字段的写操作hap ...

  6. java notifyall 唤醒顺序_Java线程中的notifyAll唤醒操作(推荐)

    注意: java中的notifyAll和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyAll是针对指定对象里面的所有线程执行唤醒操作,指 ...

  7. HashMap源码和并发异常问题分析

    HashMap 作为最常用的 Map 类,是基于哈希表实现的,继承了 AbstractMap 并且实现了 Map 接口. 哈希表将键的 Hash 值映射到内存地址,即根据键获取对应的值,并将其存储到内 ...

  8. Python中的文件操作和异常

    Python中的文件操作和异常 文章目录 Python中的文件操作和异常 一.文件 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 ...

  9. Java并发(五)线程池使用番外-分析RejectedExecutionException异常

    Java并发(五)线程池使用番外-分析RejectedExecutionException异常 参考文章: (1)Java并发(五)线程池使用番外-分析RejectedExecutionExcepti ...

最新文章

  1. maven 使用 问题记录
  2. Mysql 的源码包安装
  3. ie bug(如果不足,留言大家一起分享)
  4. LGB 的 .feature_importance() 函数
  5. wp comments post.php,通过修改wp-comments-post.php 防wordpress垃圾(spam)评论 | 沉默过客
  6. python 打造一个sql注入脚本 (一)
  7. asp.net core系列 40 Web 应用MVC 介绍与详细示例
  8. java载入器材_JAVA之了解类载入器Classloader
  9. XCode - 无法对iPhone真机调试的解决方法!
  10. HDU2004 成绩转换【入门】
  11. 恍然若梦:南京珠江路一晚安利-传销经历。
  12. wpf Route Event Code Snippet
  13. 2021年初级会计职称《初级会计实务》考试真题资产内容
  14. Zynq-Linux移植学习-通过IIC访问RXS2448交换芯片
  15. android 无障碍 webview,Android WebView使用
  16. 目前最流畅的android手机,买安卓手机请认准这五个最流畅的系统
  17. 等待末日, 一家6口在地窖里住9年? 被警方救出后, 前后太诡异了!
  18. tensorflow实战:由ckpt转成pb步骤的总结
  19. Github 搜索语法大全
  20. 最好的mac的epub阅读器

热门文章

  1. 用Memcache守护程序把数据缓存到内存二
  2. Smali文件添加try/catch语句,出现“invalid use of move-exception”异常
  3. Eclipse 中 SDK无法更新---解决方法
  4. HIbernate——hibernate中的各种查询
  5. Docker 安装私有镜像库的简单使用
  6. Numpy、Scipy、matplotlib、scikit-learn等常用学习链接
  7. [转]Ubantu vmware tools 安装
  8. conrtex 和 ARM 的关系
  9. 【Keras】基于SegNet和U-Net的遥感图像语义分割
  10. 背景建模--Vibe 算法改进