我正在用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)
如何解决呢?是因为我在使用迭代器吗?
不能使用删除,而迭代 – keyser