Я создаю многопоточный чат в java. Когда пользователь u1 отправляет сообщение пользователю u2, но пользователь u2 не подключен, пользователь u1 отправляет сообщение на сервер, а пользователь u2 будет получать сообщение после его подключения к серверу. Сообщения, которые не отправляются, добавляются в ArrayList. Как только пользователь подключается, он проверяет, является ли он получателем ожидающего сообщения. Если он есть, сообщение отправляется ему, а затем удаляется из списка ожидающих сообщений. Вот как я это делаю:одновременная модификация 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)
Как я могу это исправить? Это потому, что я использую итератор?
Вы не можете использовать удалить в то время как итерация – keyser