私はあなたがConcurrentModificationが何を意味するのか混乱していると思う
...
このための最も一般的な発生があります。例えば
次
public static void main(String[] args) {
List<String> l = new LinkedList<>();
for(int i=0; i < 100; i++) {
l.add("banana"+i);
}
for (String s : l) {
if("banana10".equals(s)) {
l.remove(s);
}
}
}
をすれば...これはあなたにConcurrentModificationExceptionを与えるだろう。注意してください、私はスレッドを生成していません。
次のように同じことを行うための正しい方法は次のとおりです。
public static void main(String[] args) {
List<String> l = new LinkedList<>();
for(int i=0; i < 100; i++) {
l.add("banana"+i);
}
for (Iterator<String> iterator = l.iterator(); iterator.hasNext();) {
String s = iterator.next();
if("banana10".equals(s)) {
iterator.remove();
}
}
}
あなたはそれをループしている間、コレクションを変更するイテレータの使用に注意してください。
私はあなたに並行性の問題はないと思います!
コレクションをスレッドセーフにしたい場合は、スレッドの安全性のセマンティクスを調べる必要があります。複数のスレッドが同じコレクションにアクセスできるようにする場合は、ConcurrentListを使用するとよいでしょう。原子的に設定されたリスト参照が必要な場合は、全体としてAtomic参照を使用できます。
"コレクションのコレクションに"?どういう意味ですか? –