私はこの概念をいくつかのチュートリアルから理解していましたが、あるスレッドがリストを反復している間、他のスレッドは基になるリストを変更することができ、ConcurrentModificationException(CME)を取得できません。 CMEを入手してください。CopyOnWriteArrayList(cowal)
しかし、次のプログラムではスレッド(メインスレッド)は1つのみですが、CMEを取得しています。なぜですか?
イテレータですか?
ALをCOWALに置き換えても例外はありませんが、要素 "D"も持っていません。なぜですか?イテレータが作成された後、あなたがリスト構造(要素の追加または削除)を変更しているライン
l.add("d");
ので
AL<String> l=new AL<>();
l.add("a");
l.add("b");
l.add("c");
Iterator<String> itr=l.iterator();
l.add("d");
while(itr.hasNext())
{
String s=itr.next();
Sop(s);
}
私すでにやった...あなたはそれの上にマウスを置くならば、これはネットの概念ではなく、JVMのものであることを説明し、「コンカレント・コレクション」 –
。例外を取得する理由は、イテレータをすでに取得した後にコレクション(AL)を変更するためです。ここに含まれるスレッドの数は関係ありません。 – StuartLC
タグを変更しました.netの概念.. –