容器的ConcurrentModificationExceptiion。以list为例,在iterator的时候,如果该容器的元素被修改过,在调用hasNext()或Next()的时候会抛出ConcurrentModificationException.但由于没有加锁,极端情况下并不会抛出异常。
需要注意的是,有一些隐含调用iterator的情况需要注意。比如toString()
public class HiddenIterator {
private final Set<Integer> set=new HashSet<Integer>();
public synchronized void add(Integer i){
set.add(i);
}
public synchronized void remove(Integer i){
set.remove(i);
}
public void addTenthings(){
Random random=new Random();
for(int i=0;i<10;i++){
add(random.nextInt());
}
System.out.println("Debug:add ten things to:"+set);
}
}
hashCode,equals方法同样会调用。