【发布时间】:2010-12-20 20:30:41
【问题描述】:
假设我有以下课程:
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。循环迭代器的线程安全是否取决于具体的可迭代实现?
【问题讨论】:
标签: java iterator thread-safety guava