は、私は、次のクラスがあると仮定:guava-libraries:Iterators.cycle()はスレッドセーフですか?
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);
}
}
はFooのインスタンスが二つのスレッドにより同時にacessedされている場合、私は、各スレッドがiterator.next()
異なる値を取得することを必要とします。 bar()
メソッドを同期させる必要がありますか?またはiterator.next()
はスレッドセーフであることが保証されていますか?
この例では、基本的なIterableとしてArrayListを使用しています。サイクリックイテレータのスレッドセーフティは、特定の反復可能な実装に依存しますか?
ありがとうございます。