公共类:
public static Map lhmResp = Collections.synchronizedMap(new LinkedHashMap(16,0.75f,true));
线程类1:
while (true) {
Collection mySet = Common.lhmResp.keySet();
Iterator myIteratort = mySet.iterator();
while (myIteratort.hasNext()) {
CMPPSubmit mySubmit = (CMPPSubmit) Common.lhmResp.get(myIteratort.next());
                 myIteratort.remove();
         }
}
线程类2:
Common.lhmResp.put(key,CMPPSubmit的实例);在这种方法下,我的线程2先运行,后运行线程1,也就是不要同时运行,运行到
CMPPSubmit mySubmit = (CMPPSubmit) Common.lhmResp.get(myIteratort.next());
抛出ConcurrentModificationException异常
公共类:
public static Map lhmResp = new LinkedHashMap(16,0.75f,false);
public static Map lhmResp = Collections.synchronizedMap(new LinkedHashMap(16,0.75f,true));
线程类1:
while (true) {
Collection mySet = Common.lhmResp.keySet();
Iterator myIteratort = mySet.iterator();
while (myIteratort.hasNext()) {
CMPPSubmit mySubmit = (CMPPSubmit) Common.lhmResp.get(myIteratort.next());
                 myIteratort.remove();
         }
}
线程类2:
synchronized(this){
Common.lhmResp.put(key,CMPPSubmit的实例);
}在这样方法下,同时运行,
运行到
CMPPSubmit mySubmit = (CMPPSubmit) Common.lhmResp.get(myIteratort.next());
抛出ConcurrentModificationException异常

解决方案 »

  1.   

    第二个方法刚才在公共类这写错了,改正公共类:
    public static Map lhmResp = new LinkedHashMap(16,0.75f,false);
    线程类1:
    while (true) {
    Collection mySet = Common.lhmResp.keySet();
    Iterator myIteratort = mySet.iterator();
    while (myIteratort.hasNext()) {
    CMPPSubmit mySubmit = (CMPPSubmit) Common.lhmResp.get(myIteratort.next());
                     myIteratort.remove();
             }
    }
    线程类2:
    synchronized(this){
    Common.lhmResp.put(key,CMPPSubmit的实例);
    }在这样方法下,同时运行,
    运行到
    CMPPSubmit mySubmit = (CMPPSubmit) Common.lhmResp.get(myIteratort.next());
    抛出ConcurrentModificationException异常