das*_*sen 1 java concurrentmodification
当我运行这段代码时,我收到了"发生异常:java.util.ConcurrentModificationException".有没有人在这看到问题是什么?
public void mudaDeEstado() {
Luz luz = new Luz();
while(this.iterador.hasNext()) {
luz = (this.iterador.next());
luz.defineEstado(!luz.acesa());
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!!
您正在尝试修改迭代器在循环遍历元素时保留的引用.你可以阅读更多关于他的异常这里.
例如,一个线程通常不允许修改Collection而另一个线程正在迭代它.通常,在这些情况下,迭代的结果是不确定的.如果检测到此行为,某些Iterator实现(包括JRE提供的所有通用集合实现的实现)可能会选择抛出此异常.执行此操作的迭代器称为失败快速迭代器,因为它们快速而干净地失败,而不是在未来的未确定时间冒着任意的,非确定性行为的风险.
最有可能的罪魁祸首是:
luz.defineEstado(!luz.acesa());
Run Code Online (Sandbox Code Playgroud)