1.同步容器类
同步容器类包括Vector和Hashtable,或者通过Collections.synchronizedXxx等工长方法创建的。
这些实现线程安全的方式:将他们的状态封装起来,并对每个共有方法加锁。
1.1 同步容器类的问题
复合操作:迭代(反复访问元素,直到遍历完容器中所有元素)、条件运算(若没有则添加)。在其他线程并发地修改容器时,它们可能会变现出意料之外的行为。
如:
public static Object getLast(Vector list) {
int lastIndex = list.size() - 1;
return list.get(lastIndex);
}
public static void deleteLast(Vector list) {
int lastIndex = list.size() - 1;
list.remove(lastIndex);
}
当两个线程同时分别执行上面的两个