概述
同步容器类包括Vector
和HashTable
,二者是早前JDK的一部分,这些同步类是由Collections.synchronizedXxx等工厂方法实现的. 这些类线程安全的方式是: 将他们的状态封装起来, 并对他们的每个公有方法进行同步, 使得每次只有一个线程能够访问容器.
迭代器与CurrentModificationException
对容器类进行标准的迭代操作都是使用Iterator, 然而如果有其他线程在容器迭代的时候修改容器内容时候, 就会报错CurrentModificationException
, 这种行为叫做及时失败(fail-fast)
.
这种及时失败的迭代器并不是一种完备的处理机制, 他的实现方式是: 将计数器的变化与容器关联在一起, 当在迭代期间计数器被修改就会报错.
解决办法
可以使用克隆的办法.