ConcurrentModificationException

ConcurrentModificationException

我下面有一个代码段。我有两个线程A和B同时运行。

List<String> listPeople = new ArrayList<>();
// Add more item
.....

Thread A
for (String item : listPeople) {
    System.out.println("Name is: " + item.name);
}

Thread B
- add/remove item to list people


使用这种形式的for循环,它通过List的iterator循环。那么ConcurrentModificationException会崩溃吗?

最佳答案

ConcurrentModificationException Javadoc


  请注意,此异常并不总是表示对象已被其他线程同时修改。 [...]
  
  请注意,不能保证快速故障行为,因为通常来说,在存在不同步的并发修改的情况下,不可能做出任何严格的保证。失败快速操作会尽最大努力抛出ConcurrentModificationException。因此,编写依赖于此异常的程序的正确性是错误的:ConcurrentModificationException仅应用于检测错误。

09-10 00:39
查看更多