日期:2014-05-20  浏览次数:20679 次

关于多线程访问Vector
有一个线程要访问Vector对象:
for(int i=0;i<v.size();i++)
 {Object obj=v.elementAt(i);
  ...... 
 }

另一个线程中: v.removeElementAt(3)

问会有什么问题?

------解决方案--------------------
Vector本身是相对线程安全的,不会有什么大问题。

但是你这里Object obj=v.elementAt(i);之后的部分访问的obj对象有可能已经从Vector中删除了。
------解决方案--------------------
最后可能会少一个数据,获取出来的数据不全
------解决方案--------------------
1. 获取的数据有可能未必是自己想要的
2. 删除可能会报错,v未必有三个对象
------解决方案--------------------
Vector 是一个线性安全的collection应该不会有问题吧