параллельная модификация arraylist [закрыто]

Я создаю многопоточный чат в Java. Когда пользователь u1 отправляет сообщение пользователю u2, но пользователь u2 не подключен, пользователь u1 отправляет сообщение на сервер, и пользователь u2 получит сообщение, как только он подключится к серверу. Сообщения, которые не отправляются, добавляются в ArrayList. Как только пользователь подключается, он проверяет, является ли он получателем ожидающего сообщения. Если он есть, сообщение отправляется ему, а затем удаляется из списка ожидающих сообщений. Вот как я это делаю:

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);
    }
}

вот что я получаю:

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)

Как мне это исправить? Это потому, что я использую итератор?

Ответы на вопрос(4)

Ваш ответ на вопрос