多个线程对hashmap进行put操作的异常
生活随笔
收集整理的这篇文章主要介绍了
多个线程对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();}}《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读
总结
以上是生活随笔为你收集整理的多个线程对hashmap进行put操作的异常的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 使用cpanel后台的“时钟守护作业”功
- 下一篇: 发现一篇超详细的ELK搭建