Java 看一个多线程环境的问题
// vector 为共享变量
static Vector<String> vector = new Vector<String>();
public static void removeIfExist(String str ) {
int index = 0;
if ((index = vector.indexOf(str)) > 0 ) {
vector.remove(index);
}
}
在线程A 在执行 indexOf 之后,remove 语句之前的这段间隙,线程B 进入 if语句,当线程B 执行删除字符串 str 时,字符串 str 可能已经被线程A 删除,线程B 再执行删除报 ArrayIndexOutOfBoundsException 异常。

