【发布时间】:2012-05-12 10:59:12
【问题描述】:
我有两个线程修改相同的对象。这些对象是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?
【问题讨论】:
标签: java synchronization