modificação concorrente de arraylist [fechada]

Estou criando um bate-papo multithread em java. Quando o usuário u1 envia uma mensagem para o usuário u2, mas o usuário u2 não está conectado, o usuário u1 envia a mensagem para o servidor e o usuário u2 receberá a mensagem assim que ele se conectar ao servidor. As mensagens que não são enviadas são adicionadas a uma ArrayList. Depois que um usuário se conecta, ele verifica se ele é o destinatário de uma mensagem pendente. Se ele estiver, a mensagem será enviada para ele e, em seguida, removida da lista de mensagens pendentes. É assim que eu faço:

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

é isso que eu recebo:

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)

Como faço para corrigir isso? É porque estou usando o iterador?

questionAnswers(4)

yourAnswerToTheQuestion