反復中にコードを同期する必要がある場合、マップを Collections.synchronizedCollection(map) でラップするポイントは何ですか?
個々の操作をスレッドセーフにするため。(個人的には一般的には悪い考えだと思いますが、それは別の問題です。無意味ではなく、有用性が限られているだけです。)
ラップした後、スレッドセーフにするべきではありませんか?
個々の操作については、はい。ただし、反復には多くのステップが含まれます。これらの個々のステップはそれぞれ同期されますが、コレクションはステップ間で変更され、反復子が無効になる可能性があります。ループが次のように展開されることを忘れないでください。
for (Iterator<Type> iterator = c.iterator(); iterator.hasNext(); ) {
Type e = iterator.next();
...
}
反復をスレッドセーフにする必要があるjava.util.concurrent
場合は、反復中にコレクションが変更された場合に何が保証され、何が保証されないかについての警告に注意しながら、... のコレクションの 1 つを使用する必要があります。