多个线程对hashmap进行put操作的异常
多个线程对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操作的异常相关推荐
- hashmap头插法和尾插法区别_Java程序员必知:HashMap进行put操作会不会引起死循
HashMap进行put操作会引起死循环? 最近在磕<java并发编程艺术>,在看到第六章的时候出现了下面这段我不是很理解的东西,如下 <java并发编程艺术>截取 为什么要使 ...
- 面试02——线程、HashMap、、、
一.线程相关 1.线程池原理,讲讲线程池里面的核心参数,你平时是怎么用线程池的 基本思想:预先创建多个线程对象,放入线程池,执行完后调用,用完还原到线程池. 优点: * 提高线程的利用率 * 提高程序 ...
- ITK:对多个线程上的数据进行操作以利用多核处理器
ITK:对多个线程上的数据进行操作以利用多核处理器 ITK:对多个线程上的数据进行操作以利用多核处理器 内容提要 结果 C++实现代码 ITK:对多个线程上的数据进行操作以利用多核处理器 内容提要 内 ...
- Java中HashMap的常用操作
Java中HashMap的常用操作 HashMap<Integer, Integer> hashMap = new HashMap<>();hashMap.put(5, 2); ...
- 两个子线程不冲突_多线程操作可见性
可见性:让一个线程对共享变量的修改,能够及时的被其他线程看到,java中首先想到的就是volatile volatile关键字 Java内存模型中规定: 1.对某个volatile 字段的写操作hap ...
- java notifyall 唤醒顺序_Java线程中的notifyAll唤醒操作(推荐)
注意: java中的notifyAll和notify都是唤醒线程的操作,notify只会唤醒等待池中的某一个线程,但是不确定是哪一个线程,notifyAll是针对指定对象里面的所有线程执行唤醒操作,指 ...
- HashMap源码和并发异常问题分析
HashMap 作为最常用的 Map 类,是基于哈希表实现的,继承了 AbstractMap 并且实现了 Map 接口. 哈希表将键的 Hash 值映射到内存地址,即根据键获取对应的值,并将其存储到内 ...
- Python中的文件操作和异常
Python中的文件操作和异常 文章目录 Python中的文件操作和异常 一.文件 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 ...
- Java并发(五)线程池使用番外-分析RejectedExecutionException异常
Java并发(五)线程池使用番外-分析RejectedExecutionException异常 参考文章: (1)Java并发(五)线程池使用番外-分析RejectedExecutionExcepti ...
最新文章
- maven 使用 问题记录
- Mysql 的源码包安装
- ie bug(如果不足,留言大家一起分享)
- LGB 的 .feature_importance() 函数
- wp comments post.php,通过修改wp-comments-post.php 防wordpress垃圾(spam)评论 | 沉默过客
- python 打造一个sql注入脚本 (一)
- asp.net core系列 40 Web 应用MVC 介绍与详细示例
- java载入器材_JAVA之了解类载入器Classloader
- XCode - 无法对iPhone真机调试的解决方法!
- HDU2004 成绩转换【入门】
- 恍然若梦:南京珠江路一晚安利-传销经历。
- wpf Route Event Code Snippet
- 2021年初级会计职称《初级会计实务》考试真题资产内容
- Zynq-Linux移植学习-通过IIC访问RXS2448交换芯片
- android 无障碍 webview,Android WebView使用
- 目前最流畅的android手机,买安卓手机请认准这五个最流畅的系统
- 等待末日, 一家6口在地窖里住9年? 被警方救出后, 前后太诡异了!
- tensorflow实战:由ckpt转成pb步骤的总结
- Github 搜索语法大全
- 最好的mac的epub阅读器
热门文章
- 用Memcache守护程序把数据缓存到内存二
- Smali文件添加try/catch语句,出现“invalid use of move-exception”异常
- Eclipse 中 SDK无法更新---解决方法
- HIbernate——hibernate中的各种查询
- Docker 安装私有镜像库的简单使用
- Numpy、Scipy、matplotlib、scikit-learn等常用学习链接
- [转]Ubantu vmware tools 安装
- conrtex 和 ARM 的关系
- 【Keras】基于SegNet和U-Net的遥感图像语义分割
- 背景建模--Vibe 算法改进