gpt4 book ai didi

java - 代码产生并发修改异常

转载 作者:行者123 更新时间:2023-12-01 23:53:51 26 4
gpt4 key购买 nike

我有以下代码:

public static void pauseAllTimers() {
for(Timer timer : Timer.allTimers) {
timer.pause();

}

}

在一个线程中向 allTimers 添加和删除 Timer 实例的位置(据我所知,除非我正在监督代码中的某些内容)。

为什么我的代码会产生并发修改异常?

最佳答案

当您从集合中删除时,您会迭代集合 - 假设 pause() 删除计时器。不要这样做 - 您正在修改一个集合,同时仍在迭代它,这是一种并发修改,即使只有一个线程。

将计时器集复制到列表中,然后迭代:

List<Timer> timers = new ArrayList<Timer>(Timer.allTimers);
for (Timer timer : timers) {
timer.pause();
}

关于java - 代码产生并发修改异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15910098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com