集合類(二)

關於迭代器(Iterator)的兩種迭代機制:fail-fast 和 fail-safe多線程

fail-fast 機制:遍歷集合時,當集合結構被修改,會拋出Concurrent Modification Exception線程

觸發條件:單線程在遍歷過程修改,remove()不會觸發;多線程中一個線程遍歷時另外一個線程在進行修改對象

實現方法:在迭代器內部標記了一個mode,集合進行修改時,mode會發生改變,在迭代過程當中,每次next(),hashNext()都會去檢查這個標記是否發生變化rem

 

fail-safe機制:對集合結構的修改會在一個clone的集合中修改,不會拋出該錯誤hash

問題:複製集合產生大量無效對象,系統開銷大;沒法保證當前讀取數據是最新的數據it

fail-fast和 fail-safe對比io

 

Throw ConcurrentModification Exception Yes No
Clone object No Yes
Memory Overhead No Yes
Examples HashMap,Vector,ArrayList,HashSet CopyOnWriteArrayList,ConcurrentHashMap
相關文章
相關標籤/搜索