java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429)
at java.util.HashMap$EntryIterator.next(HashMap.java:1463)
at java.util.HashMap$EntryIterator.next(HashMap.java:1461)
at com.bjsxt.base.coll013.UseConcurrentMap$2.run(UseConcurrentMap.java:94)
at java.lang.Thread.run(Thread.java:745)
亲测多线程情况下很快就会报错如上,测试代码如下:
MyThread1[] t=new MyThread1[160]; HashMap<Integer, Object> chm2 = new HashMap<Integer, Object>(); Thread tt1=new Thread(new Runnable() { public int k=0; @Override public void run() { for(int i=0;i<16;i++){ final int x=i; t[i]=new MyThread1(i){ // int k=x; @Override public void run(){ // System.out.println("线程"+x); for(int j=0;j<100000;j++){ // System.out.println("++++++++++++++++++++"+k); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } chm2.put(k,x+"线程"); k++; } System.out.println(x+"线程结束(((((((((((("); } }; } for(int i=0;i<16;i++){ try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } try { t[i].start(); }catch (Exception e){ e.printStackTrace(); } } } });