2015-02-09 81 views
0

Java中的迭代器快速失效。如果迭代器值在迭代時發生更改,則會引發異常。爲什麼迭代器失敗的速度很快,它們真的失敗得很快嗎?

這是純粹的安全嗎?我相信,在某些情況下,如果價值觀發生變化,這並不重要。例如,假設您每隔10秒向一個迭代器中的成員發送非嚴重警報 - 您爲什麼會在意內容是否更改?

此外,故障快速實施只是檢查計數。這是有缺陷的情況下,另一個線程添加並刪除計數將是相同的,即使迭代器的內容改變。使用版本號會不會更好?

回答

1

故障快速行爲純粹是爲了幫助調試。一般規則是,如果您在通過除迭代器成員之外的其他方法迭代集合的同時修改集合,則迭代器的行爲不再可預測。它會盡最大努力拋出異常。

因此,任何昂貴的跟蹤方法都是一個壞主意。

相關問題