繁体   English   中英

代码产生并发修改异常

[英]Code produces Concurrent Modification Exception

我有以下代码:

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

        }

    }

在一个线程内将Timer实例添加到allTimers或从中删除的情况(据我所知,除非我监督代码中的内容)。

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

从集合中删除时,您正在遍历整个集合-假设pause()会删除计时器。 不要这样做-在修改集合的同时仍要对其进行迭代,即使只有一个线程,这也是并发修改。

设定定时器复制到一个列表,然后遍历

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM