Beste Weg, um zu verhindern, dass concurrent modification exception

Hier einige pseudo-code wie folgt.

public class MyObject
{   
    private List<Object> someStuff;
    private Timer timer;

    public MyObject()
    {
        someStuff = new ArrayList<Object>();

        timer = new Timer(new TimerTask(){

            public void run()
            {
                for(Object o : someStuff)
                {
                    //do some more stuff involving add and removes possibly
                }
            }
        }, 0, 60*1000);
    }

    public List<Object> getSomeStuff()
    {
        return this.someStuff;
    }
}

Also im wesentlichen das problem ist, dass andere Objekte, die nicht in den obigen code nennen getSomeStuff (), um die Liste der für nur-lese-Zwecke. Ich bin immer concurrentmodificationexception in der timer-thread, wenn dies der Fall ist. Ich habe versucht, die getSomeStuff Methode synchronisiert, und sogar versucht synchronisierte Blöcke in der timer-thread, aber noch immer der Fehler. Was ist die einfachste Methode des Aufhörens der gleichzeitige Zugriff von der Liste?

InformationsquelleAutor thatidiotguy | 2012-04-18

Schreibe einen Kommentar