Предположим, у меня есть следующий класс:
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 одновременно обращаются два потока, мне нужно, чтобы каждый поток получил различное значение от iterator.next()
.Нужно ли синхронизировать метод bar()
?Или iterator.next()
гарантированно безопасен для потоков?
В этом примере я использую ArrayList в качестве базового Iterable.Зависит ли потокобезопасность циклического итератора от конкретной итерируемой реализации?
Спасибо.