English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Numéro | Clé | Échec | Sécurité contre les pannes |
---|---|---|---|
1 | Exceptions | Toute modification dans l'ensemble (par exemple, l'ajout, la suppression et la mise à jour de l'ensemble pendant un thread) échoue en itérant l'ensemble, puis en provoquant une exception de modification concurrente rapide. | Les ensemble sécurisés contre les pannes ne provoquent pas d'exception. |
2. | Types de ensemble | ArrayList et hashmap sont des exemples d'itérateurs de faillite rapide | CopyOnWrite et modification concurrente sont des exemples d'itérateurs sécurisés contre les pannes |
3. | Performance et mémoire | Travailler sur l'ensemble réel. Par conséquent, cet itérateur n'a pas besoin de mémoire et de temps supplémentaires | Il traite une copie du ensemble,而非实际的 ensemble. Les coûts en termes de temps et de mémoire |
4. | Modification | L'itérateur ne permet pas de modifier le ensemble pendant l'itération. | Les itérateurs de protection contre les pannes permettent de modifier le jeu pendant l'itération. |
public class FailSafeExample{ public static void main(String[] args){ ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<String, Integer>(); //Ajouter des éléments sur la carte map.put("Dell", 1); map.put("IBM", 2); //Obtenir un itérateur à partir de la carte Iterator<String> it = map.keySet().iterator(); while (it.hasNext()){ String key = (String) it.next(); System.out.println(key+" : "+map.get(key)); map.put("Google", 3); } } }
Résultat de la sortie
IBM :2 Dell:1
public class FailFastExample{ public static void main(String[] args){ List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); //Obtenir un itérateur à partir de la liste Iterator<Integer> it = list.iterator(); while (it.hasNext()){ Integer integer = (Integer) it.next(); list.add(4); } } }
Résultat de la sortie
Exception dans le thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(Unknown Source)