java - ConcurrentModificationException 未发生

标签 java concurrency crash

我有以下代码:

List list = getItems(); //where getItems() returns List<Item>


        do {
            list.add(adPosition);
            adPosition = adPosition + (AD_REPEAT_VALUE + 1);
            adsNumber++;
        } while (adsNumber < MAX_NUMBER_OF_ADS && adPosition < list.size());

据我所知,这段代码应该因 ConcurrentModificationException 崩溃,因为列表大小已修改。但它不会崩溃。这怎么可能?!

最佳答案

向列表添加元素是完全合法的。请参阅有关 ConcurrentModificationException 的文档:当您同时添加和迭代列表时会抛出它,例如:

Iterator it = list.iterator();
while (it.hasNext()) {
    list.add(elem); // ConcurrentModificationException thrown here
}

关于java - ConcurrentModificationException 未发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28806128/

相关文章:

java - 基于String的调用方法

java - 重新启动 quartz 调度程序而不会出错

java - Spring模型验证错误

sql - 选择查询的事务死锁

c++ - 在类中使用私有(private)变量

C++程序崩溃了

java - Azure (Java) BlobClient.uploadWithResponse 何时准备好上传?

go - 为什么并发不能加速我的斐波那契函数?

java - 共享 ArrayList 的并发修改异常

browser - 网站完全崩溃ie7?