nehme ich die folgende Klasse haben:Guava-Bibliotheken: ist Iterators.cycle() Thread-sicher?
public class Foo {
private List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5);
private Iterator<Integer> iterator = Iterators.cycle(list);
public void bar(){
Integer value = iterator.next();
doSomethingWithAnInteger(value);
}
}
Wenn eine Instanz von Foo gleichzeitig von zwei Threads acessed ist, ich brauche, dass jeder Faden von iterator.next()
einen anderen Wert erhält. Muss die bar()
Methode synchronisiert werden? Oder ist iterator.next()
garantiert fadensicher?
In diesem Beispiel verwende ich eine ArrayList als das zugrunde liegende Iterable. Ist die Thread-Sicherheit des zyklischen Iterators von der spezifischen iterierbaren Implementierung abhängig?
Vielen Dank.