Arraylist Concurrent Modification [geschlossen]

Ich erstelle einen Multithread-Chat in Java. Wenn Benutzer u1 eine Nachricht an Benutzer u2 sendet, Benutzer u2 jedoch nicht verbunden ist, sendet Benutzer u1 die Nachricht an den Server und Benutzer u2 empfängt die Nachricht, sobald er eine Verbindung zum Server herstellt. Die nicht gesendeten Nachrichten werden einer ArrayList hinzugefügt. Sobald ein Benutzer eine Verbindung herstellt, prüft er, ob er der Empfänger einer ausstehenden Nachricht ist. Ist dies der Fall, wird die Nachricht an ihn gesendet und dann aus der Liste der ausstehenden Nachrichten entfernt. So mache ich es:

for(Iterator<String> itpendingmsgs = pendingmsgs.iterator(); itpendingmsgs.hasNext();) {
    String pendingmsg = itpendingmsgs.next();
    String dest = pendingmsg.substring(4);              
    if (protocol.author.equals(dest)) {
        sendMsg(msg);
        pendingmsgs.remove(pendingmsg);
    }
}

das bekomme ich:

Exception in thread "Thread-3" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
at java.util.AbstractList$Itr.next(Unknown Source)
at ChatServer$ClientConnection.run(ChatServer.java:383)
at java.lang.Thread.run(Unknown Source)

Wie behebe ich das? Liegt es daran, dass ich den Iterator verwende?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage