Encore une petite question. Voici un exemple de classe:
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();
    }

}
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?
Ou alors ça garantit juste que la création de l'itérateur sera synchronisé, mais pas son parcours?