摘要:一什么是機制在用迭代器遍歷集合時當集合的結構被修改會拋出異常二什么情況下集合的結構會被修改單線程環境集合在遍歷的過程中如果要對集合進行增刪操作沒有調用迭代器的方法而是用的集合自身的方法則可能會產生事件多線程環境下當一個線程在遍歷某個集合
一.什么是fail-fast機制?
在用迭代器遍歷集合時,當集合的結構被修改,會拋出ConcurrentModificationException異常
二.什么情況下集合的結構會被修改?1.單線程環境
集合在遍歷的過程中,如果要對集合進行增刪操作,沒有調用迭代器的方法,而是用的集合自身的方法,則可能會產生fail-fast事件
2.多線程環境下
當一個線程在遍歷某個集合的過程中,另一個線程對集合的結構進行了修改,則可能產生fail-fast事件
迭代器在進行初始化的時候會將當前的modCount值賦值給exceptedmodCount變量,在每次迭代時都會校驗modcount和exceptedCount是否相等,如果不相等就會拋出java.util.ConcurrentModificationException異常.
四.什么是安全失敗?采用安全失敗機制的集合容器,在遍歷時不是直接在集合內容上訪問的,而是先復制原有集合內容,在拷貝的集合上進行遍歷,所以對原集合的修改并不會被迭代器檢測到
五.快速失敗和安全失敗分別對應哪些類?java.util包下的集合都是快速失敗的
java.util.concurrent包下的集合都是安全失敗的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69700.html
摘要:注意,迭代器的快速失敗行為無法得到保證,因為一般來說,不可能對是否出現不同步并發修改做出任何硬性保證??焖偈〉鲿M最大努力拋出。 fail-fast與fail-safe 在Collection集合的各個類中,有線程安全和線程不安全這2大類的版本。 對于線程不安全的類,并發情況下可能會出現fail-fast情況;而線程安全的類,可能出現fail-safe的情況。 一、并發修改 當一...
摘要:與在迭代器中的設計在中,最典型的與就是關于迭代器的設計。缺點是,迭代器不能正確及時的反應集合中的內容,而且一定程度上也增加了內存的消耗。 fail-fast與fail-safe簡介 如果一個系統,當有異常或者錯誤發生時就立即中斷執行,這種設計稱之為fail-fast。相反如果我們的系統可以在某種異?;蛘咤e誤發生時繼續執行,不會被中斷,這種設計稱之為fail-safe。 fail-fas...
摘要:體現的就是適配器模式。數組對象集合世界中的機制機制集合世界中比較常見的錯誤檢測機制,防止在對集合進行遍歷過程當中,出現意料之外的修改,會通過異常暴力的反應出來。而在增強循環中,集合遍歷是通過進行的。 前言 學習情況記錄 時間:week 2 SMART子目標 :Java 容器 記錄在學習Java容器 知識點中,關于List的重點知識點。 知識點概覽: 容器中的設計模式 從Array...
摘要:我們都接觸這些集合類,這些在包的集合類就都是快速失敗的而包下的類都是安全失敗,比如。安全失敗明白了什么是快速失敗之后,安全失敗也是非常好理解的。最后說明一下,快速失敗和安全失敗是對迭代器而言的。 什么是快速失?。╢ail-fast)和安全失?。╢ail-safe)?它們又和什么內容有關系。以上兩點就是這篇文章的內容,廢話不多話,正文請慢用。 我們都接觸 HashMap、ArrayLis...
閱讀 2106·2021-11-24 09:39
閱讀 1494·2019-08-30 15:44
閱讀 1946·2019-08-29 17:06
閱讀 3392·2019-08-29 16:32
閱讀 3543·2019-08-29 16:26
閱讀 2654·2019-08-29 15:35
閱讀 3026·2019-08-29 12:50
閱讀 1636·2019-08-29 11:15