国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Fail Fast Vs Fail Safe

2019-11-08 02:28:57
字體:
來源:轉載
供稿:網友

原文

Fail Fast And Fail Safe Iterators In java :

java中的迭代器使我們能夠遍歷Collection對象。 集合返回的迭代器本質上是Fail Fast的或 Fail Safe的。 如果在迭代集合時修改集合,則Fail-Fast迭代器立即拋出ConcurrentModificationException。 當 Fail Safe迭代器不會拋出任何異常,如果一個集合被修改,而迭代它。 因為,它們對集合的克隆操作,而不是對實際集合。 讓我們詳細看看Fail Fast 和 Fail Safe迭代器。

Fail-Fast Iterators In Java :

由大多數集合類型返回的Fail-Fast迭代器不能容忍對集合進行迭代時的任何結構修改。 (結構修改意味著添加,刪除或更新集合中的元素)如果在迭代正在集合上進行結構上修改,則拋出ConcurrentModificationException。 但是,如果集合被迭代器自己的方法(如remove())修改,它們不會拋出任何異常。

How Fail-Fast Iterators Work?

所有集合類型維護一個內部對象數組(Object [])來存儲元素。 Fail-Fast迭代器直接從此數組獲取元素。 他們總是認為這個內部數組在迭代其元素時不會被修改。 要知道集合是否被修改,它們使用一個名為modCount的內部標志,每次修改集合時更新它。 每次當一個Iterator調用next()方法時,它會檢查modCount。 如果發現modCount在創建了這個Iterator之后已經被更新,它會拋出ConcurrentModificationException。

import java.util.ArrayList;import java.util.Iterator;public class FailFastIteratorExample { public static void main(String[] args) { //Creating an ArrayList of integers ArrayList<Integer> list = new ArrayList<Integer>(); //Adding elements to list list.add(1452); list.add(6854); list.add(8741); list.add(6542); list.add(3845); //Getting an Iterator from list Iterator<Integer> it = list.iterator(); while (it.hasNext()) { Integer integer = (Integer) it.next(); list.add(8457); //This will throw ConcurrentModificationException } } }

Fail-Safe Iterators In Java :

Fail-Safe迭代器不會拋出任何異常,如果集合被修改,而迭代它。 因為,他們迭代的集合的克隆而不是實際的集合。 因此,對實際收集執行的任何結構修改都不會被這些迭代器注意到。 但是,這些迭代器有一些缺點。 其中之一是,并不總是保證你將在迭代時獲得最新的數據。 因為迭代器創建后對集合的任何修改都不會在迭代器中更新。 這些迭代器的另一個缺點是,在時間和內存方面創建集合的副本將有額外的開銷。

import java.util.Iterator;import java.util.concurrent.ConcurrentHashMap;public class FailSafeIteratorExample { public static void main(String[] args) { //Creating a ConcurrentHashMap ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>(); //Adding elements to map map.put("ONE", 1); map.put("TWO", 2); map.put("THREE", 3); map.put("FOUR", 4); //Getting an Iterator from map Iterator<String> it = map.keySet().iterator(); while (it.hasNext()) { String key = (String) it.next(); System.out.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高邑县| 镇原县| 翼城县| 平远县| 逊克县| 太仆寺旗| 福州市| 开远市| 安庆市| 韩城市| 蓬莱市| 康定县| 西畴县| 灵武市| 梨树县| 调兵山市| 新津县| 岳西县| 垣曲县| 瓮安县| 文水县| 兴宁市| 油尖旺区| 金溪县| 平度市| 聊城市| 龙山县| 舞钢市| 慈利县| 聂荣县| 营山县| 甘泉县| 郸城县| 平潭县| 金秀| 沁阳市| 临沂市| 临湘市| 谢通门县| 龙井市| 凤凰县|