java - 迭代 ArrayList 时出现 ConcurrentModificationException

标签 java

synchronized(queueClientList){
    Iterator<Client> iterator = queueClientList.iterator();
    while (iterator.hasNext()){
        Client client = new Client();
        client = iterator.next();
        try {
            Thread.sleep(client.serviceTime);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
        System.out.println(client.ID+ " it`s out");
        queueClientList.remove(client);
    }
}

此代码应迭代 queueClientList并使线程 hibernate client.serviceTime毫秒。唤醒后,它应该从 queueClientList 中删除当前客户端。 。

它给了我ConcurrentModificationExceptionclient = iterator.next()线

queueClientList的声明是:

public List<Client> queueClientList = Collections.synchronizedList(new ArrayList<Client>());

如果整个方法是同步的,为什么它会抛出该错误?

最佳答案

问题已解决。 问题是,我试图从列表中删除,同时迭代它,这是不可能的。

关于java - 迭代 ArrayList 时出现 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43157501/

相关文章:

java - 如何在不使用内置库函数 InetAddress.getbyName() 的情况下获取任何主机的 IP 地址?

java - 现在最需要什么Java技术?

java - 为什么更改总和顺序会返回不同的结果?

Java Spring Boot 使用剩余 api 映射到模型

java - 在java中,排序时,当我有相同的值时,特定问题的解决方案是什么

java - 通过脚本中的命令行监控 JMX

java - 从多个位置正确退出正在运行的程序的设计模式

java - Hibernate JPA 标准查询

java - 试图从 Java 解密 attr_encrypted 存储值

java - Java 中大型 BigInteger 的更快质因数分解