LinkedList中的ConcurrentModificationException

Sam*_*gha 3 java linked-list

我正在尝试设计一个将流程图转换为java或任何其他代码的软件.但是我反复得到ConcurrentModificationException ..但我不能使用布尔值来阻止concurrentModification,因为访问链表发生在各个地方.

因此,作为解决方案,我创建了以下适配器类.但是它也会从下一个方法抛出相同的异常.有没有其他解决方案或者是否可以,请告诉我如何修改我的代码......

非常感谢你...

import java.util.Iterator;
import java.util.LinkedList;

public class LinkedListAdapter<T> extends LinkedList<T>{

@Override
public boolean add(T t){

    boolean b;

    synchronized(this){
        b = super.add(t);
    }

    return b;
}

@Override
public T remove(){

    T t;

    synchronized(this){
        t = super.remove();
    }

    return t;
}

@Override
public Iterator<T> iterator(){

    final LinkedListAdapter<T> adap = this;

    return 
        new Iterator<T>(){

        private Iterator<T> iter;

        {
            synchronized(adap){
                iter = LinkedListAdapter.this.getIterator();
            }
        }

        @Override
        public boolean hasNext() {

            boolean b;

            synchronized(adap){
                b = iter.hasNext();
            }

            return b;
        }

        @Override
        public T next() {

            T t;

            synchronized(adap){
                t = iter.next();
            }

            return t;
        }

        @Override
        public void remove() {
            throw new UnsupportedOperationException();
        }
    };
}

protected Iterator<T> getIterator() {

    Iterator<T> iter;

    synchronized(this){
        iter = super.iterator();
    }

    return iter;
}
}
Run Code Online (Sandbox Code Playgroud)

Dan*_* D. 8

ConcurrentModificationException列表并在同一时间进行遍历时,通常抛出通常另一个线程,甚至同一回路试图修改(添加/删除)列表的内容.