java exception 01

问题:java.util.concurrentmodificationexception

背景:java thread

网上找到的出现的例子如下(项目中真实的code不便给出)

public class Test()
   {
      private ArrayList<A> abc = new ArrayList<A>();

      public void doStuff() 
      {
         for (A a : abc) 
            a.doSomething();
      }

      public void removeA(A a) 
      {
         abc.remove(a);
      }
  }

a.doSomething might call Test.removeA();

首先说明错误的意思:

concurrent 同时发生  modification 修改

在迭代的同时,list被其他线程或程序修改了。

解决的方法:

有几种,可以在网上查找,我选择的是 将list复制,迭代复制后的新的list

 private ArrayList<A> abc = new ArrayList<A>();
ArrayList<A> tempList = new ArrayList<A>(abc);
 public void doStuff() 
      {
         for (A a : tempList) 
            a.doSomething();
      }

这样问题便可解决,欢迎拍砖!

解决问题的时候建议多查google,国内上google要用VPNFQ,此外登录美国google的时候,网址如下:www.google.com/ncr 要加上/ncr no country redirect
原文地址:https://www.cnblogs.com/lihao007/p/6507239.html