如果考虑到多线程访问,当一个线程正在迭代某个集合,而另一个线程修改了集合的内容时,
设计方向:
1. 直接抛异常,ConcurrentModificationException,如HashMap;
2. 可正常迭代:
a. 不能保证数据一致性;如ConcurrentHashMap,(虽然迭代算法没看懂)迭代过程中有可能包括新更新的数据,有可能存在旧数据;
b. 能保证数据一致性:
b.1 snapshot;如CopyOnWriteArray,反映的是迭代器创建时刻的数据;
b.2 同步;如Vector,synchronized修饰迭代方法;
建议:
1. 首先迭代器不是设计为给多个线程中共享使用的,即在单线程中使用;
2. 建议对集合对象加锁,同步迭代(遍历);