これについての私の理解では、synchronized
ブロックは、そのブロックが終了するまで他のスレッドがアクセスできないようにするということです。つまり、現在実行中のクラス (?) によって保持されているロックを介して、それまで保留にされます。
したがって、リストを反復処理し、その直後にそのリストをfor
呼び出すブロックをブロックでラップします。これら 2 つの操作セットの間に他のスレッドをリストに追加する余裕がないためです。これは、次のように言うドキュメントに従っています。clear()
synchronized
ユーザーは、返されたコレクションを反復するときに手動で同期することが不可欠です...
add
ただし、リストにいるときに同じことをする必要があるかどうかはわかりません。私の場合、add
異なるスレッドからの操作の順序は重要ではないため、そうではないと思います。私が確信が持てないのは、synchronized
変更解除操作が悪影響を与える可能性があるかどうかだと思いますか?