【发布时间】:2015-10-19 06:35:36
【问题描述】:
我正在阅读 J. Bloch 的“Effective Java”,现在我在关于 for-each 与 for-loop 的部分。他提到了我们无法使用for-each循环的三种情况,其中一种情况如下:L
并行迭代——如果需要遍历多个集合 并行,那么您需要显式控制迭代器或索引 变量,以便所有迭代器或索引变量都可以在 锁步(如在错误卡片和骰子中无意展示的那样) 上面的例子)。
这个案子对我来说不是很清楚,我想不出一个例子。
我的第一个想法是,这只是在多个线程中迭代同一个集合,但这可能不是他的意思。我没有看到任何限制阻止我们这样做(只读)。其实:
public class MyRunnable implements Runnable{
private Collection<String> col;
//CTOR ommmited
public void run(){
for(String s : col){
//print o, not modify
}
}
然后我们只需启动一些具有相同实例的线程。因此,我们不怕得到ConcurrentModificationException (JavaDocs),因为我们执行只读访问,即使同时由多个线程执行。
怎么了?
【问题讨论】:
标签: java collections foreach