このコードブロックに対してConcurrentModificationExceptionを取得する方法はありますか?ConcurrentModificationExceptionは、リストを介して反復処理され、イテレータを使用して同期化されます。
synchronized (list) {
for (Iterator<?> it = list.iterator(); it.hasNext();) {
Object object = it.next();
// do something to object without touching list
}
}
編集:申し訳ありませんが、それが十分特異的ではなかった://直接的または間接的に「何かをする」はlist
から何かを追加または削除する場合は、オブジェクトに何かをする以外に(リストに
リストは実際のリストまたはラッパーですか?それがラッパーである場合、ロックはバッキングリストそのものにはありません。 – Thomas
+1良いポイントですが、それは実際のリストです。ラッパーはありません。 –
for-eachループはより簡単になります。 –