同期メソッドの ConcurrentModificationException: 混乱の解明
提供されているような同期メソッドでは、同期メソッドでも ConcurrentModificationException 例外が発生する可能性があります。修飾子。この例外は、通常、反復ループ内で反復されるコレクションを変更することで発生します。
ここでの問題は、メソッドを同期しても、反復の実行中にコレクションが変更されないことが保証されないことです。この例外を防ぐには、反復中にコレクションを変更しないようにすることが不可欠です。
この例外をトリガーするコード スニペットの典型的な例は次のとおりです。
Iterator iterator = collection.iterator(); while (iterator.hasNext()) { Item item = (Item) iterator.next(); if (item.satisfiesCondition()) { collection.remove(item); } }
代わりに、コードでは次のコードを使用する必要があります。 iterator.remove() メソッドを使用して、反復中にコレクションから項目を削除します。コレクションへの追加が必要な場合は、リストを処理するときに add() メソッドを提供する ListIterator サブタイプを利用できます。
以上が同期メソッドで ConcurrentModificationException が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。