Encore une petite question. Voici un exemple de classe:
Est-ce que le Collections.synchronizedCollection() garantit que le parcours via l'itérateur (foreach) par un Thread A ne pourra pas se faire "en même temps" que le listener.add() par un Thread B?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class A { private Collection<XListener> listeners; public A() { listeners = Collections.synchronizedCollection(new ArrayList<XListener>()); } public void addXListener(XListener listener) { listeners.add(listener); } private void fireX() { for(XListener listener : listeners) listener.x(); } }
Ou alors ça garantit juste que la création de l'itérateur sera synchronisé, mais pas son parcours?
Partager