Arraylist modificación concurrente [cerrado]

Estoy creando un chat multihilo en java. Cuando el usuario u1 envía un mensaje al usuario u2 pero el usuario u2 no está conectado, el usuario u1 envía el mensaje al servidor y el usuario u2 recibirá el mensaje una vez que se conecta al servidor. Los mensajes que no se envían se agregan a un ArrayList. Una vez que un usuario se conecta, comprueba si es el destinatario de un mensaje pendiente. Si lo está, el mensaje se le envía y luego se elimina de la lista de mensajes pendientes. Así es como lo hago:

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

esto es lo que obtengo:

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)

¿Cómo lo arreglo? ¿Es porque estoy usando el iterador?

Respuestas a la pregunta(4)

Su respuesta a la pregunta