在返回快速失败迭代器的单个集合上使用 iterator.remove() 的多个线程

Multiple threads using iterator.remove() on a single collection returning fail-fast iterator

甲骨文 says

Note that Iterator.remove is the only safe way to modify a collection during iteration; the behavior is unspecified if the underlying collection is modified in any other way while the iteration is in progress.

这是否意味着即使多个线程正在一起迭代同一集合的fail-fast实现的(Vector ,Hashmap,ArrayList,HashSet) object carry out iterator.remove() 不会抛出ConcurrentModificationException

这并不意味着多线程可以使用 iterator.remove() 删除数据。

如果你想实现它你需要使用同步类型的集合。即使在那种情况下,您也不应该尝试在两个线程中使用同一个迭代器。如果您有两个线程需要删除条目,那么它们每个都应该有自己的迭代器。

没有。这告诉您在迭代时(在一个线程中)删除元素的唯一安全方法是使用 iterator.remove。如果从其他线程访问(迭代或修改)集合——有时你会得到异常,有时不会——通常行为不是确定性的,所以你应该避免使用它或依赖它。

也就是说 - 唯一的例外是并发集合。