我有两个线程修改相同的对象。ArrayList
对象是(不是向量)中的自定义、非同步对象。我想让这两个线程很好地协同工作,因为它们是同时被调用的。
这是线程 1 中唯一重要的方法。
public void doThread1Action() {
//something...
for(myObject x : MyArrayList){
modify(x);
}
}
这是线程2中的一个方法:
public void doThread2Action() {
//something...
for(myObject x : MyArrayList){
modifyAgain(x);
}
}
目前,在测试时,我偶尔会遇到`ConcurrentModificationExceptions`。(我认为这取决于线程 1 在线程 2 尝试修改对象之前完成迭代的速度。)
我是否认为通过简单地附加synchronized
到这两种方法的开头,线程将以同步的方式一起工作,而不是尝试访问ArrayList
?或者我应该将 更改ArrayList
为Vector
?