synchronized(vector){
for(int i=0; i<vector.size(); i++) {
System.out.println((vector.remove(i)));
}
}
synchronized(vector){
for(int i=0; i<vector.size(); i++) {
System.out.println((vector.get(i)));
}
}
Vector的get() 、remove()、size()方法都是同步的,但是在多线程环境下,如果不在方法调用端做额外的同步措施,使用这段代码仍然是不安全的。
如果一个线程恰好删除一个元素,导致序号i 已不可再用,get()方法就会抛出一个ArrayIndexOutOfBoundsException 。