Java Collections supports 2 types of Iterator, neglect rubber as well as neglect fast. The top dog distinction betwixt a fail-fast as well as fail-safe Iterator is whether or non the underlying collection tin travel modified piece its start iterated. If yous bring used Collection similar ArrayList as well as then yous know that when yous iterate over them, no other thread should modify the collection. If Iterator detects whatever structural modify subsequently iteration has begun e.g adding or removing a novel chemical ingredient as well as then it throws ConcurrentModificationException, this is known every bit fail-fast guide as well as these iterators are called fail-fast iterator because they neglect every bit before long every bit they let out whatever modification . Though it's non necessary that iterator volition throw this exception when multiple threads modified it simultaneously. it tin occur fifty-fifty amongst the unmarried thread when yous endeavor to take elements by using ArrayList's remove() method instead of Iterator's take method, every bit discussed inward my before post, 2 ways to take objects from ArrayList.
Most of the Collection classes from Java 1.4 e.g. Vector, ArrayList, HashMap, HashSet has fail-fast iterators. The other type of iterator was introduced inward Java 1.5 when concurrent collection classes e.g. ConcurrentHashMap, CopyOnWriteArrayList as well as CopyOnWriteArraySet was introduced.
These iterator uses a thought of master copy collection for doing iteration as well as that's why they doesn't throw ConcurrentModificationException fifty-fifty when master copy collection was modified subsequently iteration has begun. This agency yous could iterate as well as piece of occupation amongst stale value, but this is the terms yous take to pay for fail-safe iterator as well as this characteristic is clearly documented
1) Fail-fast Iterator throws ConcurrentModfiicationException every bit before long every bit they let out whatever structural modify inward collection during iteration, basically which changes the modCount variable agree past times Iterator. While fail-fast iterator doesn't throw CME.
You tin too come across Core Java Volume 1 - Fundamentals past times Cay S. Horstmann to larn to a greater extent than near how to travel Iterator as well as properties of dissimilar types of iterators inward Java.
2) Fail-fast iterator traverse over master copy collection shape piece fail-safe iterator traverse over a re-create or thought of master copy collection. That's why they don't let out whatever modify on master copy collection classes as well as this too agency that yous could operate amongst stale value.
3) Iterators from Java 1.4 Collection classes e.g. ArrayList, HashSet as well as Vector are fail-fast piece Iterators returned past times concurrent collection classes e.g. CopyOnWriteArrayList or CopyOnWriteArraySet are fail-safe.
4) Iterator returned past times synchronized Collection are fail-fast piece iterator returned past times concurrent collections are fail-safe inward Java.
5) Fail fast iterator plant inward alive information but travel invalid when information is modified piece fail-safe iterator are weekly consistent.
That's all near difference betwixt fail-safe as well as fail-fast iterator inward Java. Now yous know that its only tow kinds of iterator which acquit differently when underlying collection shape is modified past times adding or removing whatever object. Keep inward heed that when yous piece of occupation amongst concurrent collection classes similar ConcurrentHashMap yous piece of occupation amongst fail-safe iterator, which volition non throw ConcurrentModificationException but non necessarily travel belongings the most updated thought of underlying Collection.
If yous similar this article as well as hungry for to a greater extent than Interview questions from Java Collection framework as well as then delight banking enterprise agree next articles from this weblog :
Most of the Collection classes from Java 1.4 e.g. Vector, ArrayList, HashMap, HashSet has fail-fast iterators. The other type of iterator was introduced inward Java 1.5 when concurrent collection classes e.g. ConcurrentHashMap, CopyOnWriteArrayList as well as CopyOnWriteArraySet was introduced.
These iterator uses a thought of master copy collection for doing iteration as well as that's why they doesn't throw ConcurrentModificationException fifty-fifty when master copy collection was modified subsequently iteration has begun. This agency yous could iterate as well as piece of occupation amongst stale value, but this is the terms yous take to pay for fail-safe iterator as well as this characteristic is clearly documented
Difference betwixt Fail Safe as well as Fail Fast Iterator inward Java
In guild to best sympathise departure betwixt these 2 iterator yous take to endeavor out examples amongst both traditional collections similar ArrayList as well as concurrent collections similar CopyOnWriteArrayList. Nevertheless let's get-go come across roughly substitution differences ane at a fourth dimension :1) Fail-fast Iterator throws ConcurrentModfiicationException every bit before long every bit they let out whatever structural modify inward collection during iteration, basically which changes the modCount variable agree past times Iterator. While fail-fast iterator doesn't throw CME.
You tin too come across Core Java Volume 1 - Fundamentals past times Cay S. Horstmann to larn to a greater extent than near how to travel Iterator as well as properties of dissimilar types of iterators inward Java.
2) Fail-fast iterator traverse over master copy collection shape piece fail-safe iterator traverse over a re-create or thought of master copy collection. That's why they don't let out whatever modify on master copy collection classes as well as this too agency that yous could operate amongst stale value.
3) Iterators from Java 1.4 Collection classes e.g. ArrayList, HashSet as well as Vector are fail-fast piece Iterators returned past times concurrent collection classes e.g. CopyOnWriteArrayList or CopyOnWriteArraySet are fail-safe.
4) Iterator returned past times synchronized Collection are fail-fast piece iterator returned past times concurrent collections are fail-safe inward Java.
5) Fail fast iterator plant inward alive information but travel invalid when information is modified piece fail-safe iterator are weekly consistent.
When to travel neglect fast as well as fail-safe Iterator
Use fail-safe iterator when yous are non bothered near Collection to travel modified during iteration, every bit fail-fast iterator volition non allow that. Unfortunate yous can't select neglect rubber or fail-fast iterator, it depends on upon which Collection shape yous are using. Most of the JDK 1.4 Collections e.g. HashSet, Vector, ArrayList has fail-fast Iterator as well as solely Concurrent Collections introduced inward JDK 1.5 e.g. CopyOnWriteArrayList as well as CopyOnWriteArraySet supports neglect rubber Iteration. Also, if yous desire to take elements during iteration delight travel iterator's remove() method as well as don't travel take method provided past times Collection classes e.g. ArrayList or HashSet because that volition lawsuit inward ConcurrentModificationException.That's all near difference betwixt fail-safe as well as fail-fast iterator inward Java. Now yous know that its only tow kinds of iterator which acquit differently when underlying collection shape is modified past times adding or removing whatever object. Keep inward heed that when yous piece of occupation amongst concurrent collection classes similar ConcurrentHashMap yous piece of occupation amongst fail-safe iterator, which volition non throw ConcurrentModificationException but non necessarily travel belongings the most updated thought of underlying Collection.
If yous similar this article as well as hungry for to a greater extent than Interview questions from Java Collection framework as well as then delight banking enterprise agree next articles from this weblog :
- Difference betwixt an array as well as ArrayList inward Java? (answer)
- How to synchronize ArrayList inward Java? (answer)
- When to travel ArrayList as well as LinkedList inward Java? (answer)
- Difference betwixt ArrayList as well as HashSet inward Java? (answer)
- Difference betwixt Vector as well as ArrayList inward Java? (answer)
- Difference betwixt HashMap as well as ArrayList inward Java? (answer)
- How to convert ArrayList to String inward Java? (answer)
- Difference betwixt length() of array as well as size() of ArrayList inward Java? (answer)
- How to sort ArrayList inward descending guild inward Java? (answer)
- How to take duplicates from ArrayList inward Java? (solution)
No comments:
Post a Comment