1. 程式人生 > 其它 >快速失敗和安全失敗

快速失敗和安全失敗

  快速失敗:指的是在迭代集合時,如果對集合進行增刪時,會丟擲異常ConcurrentModificationException。java.util下的集合都是快速失敗

    快速失敗的原理:並且在遍歷過程中使用一個 modCount 變數。集合在被遍歷期間如果內容發生變化,就會改變 modCount 的值。每當迭代器使用 hashNext()/next() 遍歷下一個元素之前,都會檢測 modCount 變數是否為 expectedmodCount 值,是的話就返回遍歷;否則丟擲異常,終止遍歷。

  

  安全失敗:指的是在迭代集合時,對集合進行增刪時,不會丟擲異常,java.util.concurrent下的集合都是安全失敗。

    安全失敗的原理:由於迭代時是對原集合的拷貝進行遍歷,所以在遍歷過程中對原集合所作的修改並不能被迭代器檢測到,所以不會觸發 Concurrent Modification Exception。這頁也將導致無法在當前遍歷的過程中無法訪問增加修改的內容。