快速失败的迭代器迭代集合。如果集合在迭代时被修改,我们会得到异常。相反适用于故障安全,其中迭代发生在一个集合上,而写操作发生在它的副本上,因此这就是故障安全的工作方式(fe CopyOnWriteArrayList)。
有人可以解释一下 ConcurrentSkipListSet 如何具有故障安全功能吗?修改集合时没有副本(就像 CopyOnWrite 类一样),那么它是怎么发生的呢?我阅读是因为它的迭代器是弱一致的。我阅读了文档,我仍然不明白。(但我确实知道并发中的代码可见性或发生之前的关系是什么)。
有没有人有逻辑和易于记忆的解释,因为我是初学者?
//例子:
ConcurrentSkipListSet<Integer> set = new ConcurrentSkipListSet<>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
set.remove(4);
}
OUTPUT:
1
2
3
我期待在这里抛出 ConcurrentException ..请帮助:(