私の知る限り、1つのスレッドがコレクションを反復し、別のスレッドがコレクションを変更するときにConcurrentModificationExceptionを回避する方法は2つあります。
- クライアントロック、基本的に反復中にコレクションをロックします。コレクションにアクセスする必要がある他のスレッドは、反復が完了するまでブロックされます。
- コレクションのクローンを作成し、コピーを反復する「スレッド制限」。
他に選択肢はありますか?最初の方法は明らかであり、パフォーマンスの面で望ましくなく、パフォーマンスが低いためです。コレクションが大きい場合、他のスレッドが長時間待機する可能性があります。2番目の方法では、コレクションのクローンを作成してコピーを繰り返すので、他のスレッドが入って元のスレッドを変更すると、コピーされたスレッドが古くなるかどうかわかりません。それは、クローンを作成して再起動し、変更したらもう一度繰り返す必要があることを意味しますか?