同じオブジェクトを変更する2つのスレッドがあります。オブジェクトは、ArrayList
(ベクトルではなく)のカスタムの同期されていないオブジェクトです。これらの2つのスレッドは同時に呼び出されるため、これら2つのスレッドをうまく連携させたいと思います。
これがスレッド1の唯一の重要なメソッドです。
public void doThread1Action() {
//something...
for(myObject x : MyArrayList){
modify(x);
}
}
これがスレッド2のメソッドです:
public void doThread2Action() {
//something...
for(myObject x : MyArrayList){
modifyAgain(x);
}
}
現時点では、テスト時に「ConcurrentModificationExceptions」が発生することがあります。(スレッド2がオブジェクトを変更しようとする前に、スレッド1が反復を完了する速度に依存すると思います。)
synchronized
これらの2つのメソッドの先頭に追加するだけで、スレッドは同期された方法で連携し、アクセスを試みないだろうと私は考えていArrayList
ますか?または、をに変更する必要ArrayList
がありVector
ますか?