不完全。在我的理解中,故障安全迭代器在數據快照上工作,並確保在創建迭代器時統一表示集合的視圖。 (請參閱this blog post瞭解更詳細的處理方法)。這個屬性是保證f.i.通過迭代器的CopyOnWriteArrayList
。它的迭代器不支持收集修改操作和javadoc中進一步明確自己的行爲:
這個數組的 壽命迭代的過程中不會改變,所以 干擾是不可能的, 迭代器保證不會拋出 ConcurrentModificationException的。 迭代器將不會反映添加, 刪除或自從創建迭代器的 以來對列表的更改。 不支持 迭代器本身(刪除,設置和 添加)的元素更改操作。這些方法 拋出UnsupportedOperationException。
UPDATE:
當談論故障safeness和故障牢度它單獨的「失敗」是很重要的。迭代器有不同的情況和危害。至於鏈接的文章,我會說那裏的作者通過實現迭代器首先實現了故障安全和快速失敗的迭代迭代。
在這種情況下的失敗可以定義爲迭代集合的併發修改。當收集被修改時,快速失敗的方法是停止迭代並使呼叫者知道改變的條件(通過CME
或通過其他方式)。
當處理相同的用例和危險時,我們可以前進並思考故障安全迭代。故障安全屬性意味着只要可能(並且通過複製基礎數據成功執行該操作)迭代應該符合其合同。
請參閱我的更新。 – 2011-02-14 03:03:03