[解決済み] LinkedList checkForComodification エラー java
2022-02-28 22:45:27
質問
私がここでやろうとしていることは、メソッド "running" プロセスを与えられた量 "time" のために持っていることです。このすべてがある程度は動作するように見えますが、これらの例外を与え続けています。 これは、最初に表示されるエラーです。
Exception in thread "main" java.util.ConcurrentModificationException
そして、その後のexicutioでは、次のようになります。
at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:761)
at java.util.LinkedList$ListItr.next(LinkedList.java:696)
at parta.PartA.runQueueOne(PartA.java:273)
私は何を間違えているのかわからない。私はこれを同時進行か何かにするつもりなのだろうか?もしそうなら、どのように?私はリンクリストは本質的に同期であると思った? 多分私はこれを混乱させるところ。
さて、いずれにせよ、私が使っているメソッドは以下の通りです。
public static void runQueueOne(LinkedList<MyProcess> q1, LinkedList<MyProcess> q2, LinkedList<MyProcess> q3, LinkedList<MyProcess> q4, int ct) {
System.out.println("Running Level One Queue");
for (MyProcess p : q1) {
if (p.name.equalsIgnoreCase(q1.getFirst().name)) {
//add 3 millsedonds to the service time
q1.getFirst().serviceTimeTotal += 3;
System.out.println(q1.getFirst().name + " is running");
} else {
//add 3 millseconds to wait time fr the un busy one
p.waitTimeTotal += 3;
}
}
for (MyProcess p : q2) {
p.waitTimeTotal += 3;
}
for (MyProcess p : q3) {
p.waitTimeTotal += 3;
}
for (MyProcess p : q4) {
p.waitTimeTotal += 3;
}
//calculate all the priority
for (MyProcess p : q1) {
p.calculatePriority();
switch (p.priority) {
case 1:
break;
case 2:
q1.remove(p);
q2.add(p);
break;
case 3:
q1.remove(p);
q3.add(p);
break;
case 4:
q1.remove(p);
q4.add(p);
break;
}
}
ct += 3;
}
そして、これをmainメソッドで呼び出しているところです。
while (!allProcessDone) {
//arrival queue
for (MyProcess p : al) {
addToQueue(qOne, p, currentTime);
//cheack to see if all the processes are done
if (p1.isDone == true &
p2.isDone == true &
p3.isDone == true &
p4.isDone == true &
p5.isDone == true &
p6.isDone == true &
p7.isDone == true &
p8.isDone == true &
p9.isDone == true &
p10.isDone == true) {
//end the loop
allProcessDone = true;
System.out.println("All proccess have been completed");
break;
}
switch (robin) {
case 1:
runQueueOne(qOne, qTwo, qThree, qFour, currentTime);
robin = 2;
break;
case 2:
runQueueTwo(qOne, qTwo, qThree, qFour, currentTime);
robin = 3;
break;
case 3:
runQueueThree(qOne, qTwo, qThree, qFour, currentTime);
robin = 4;
break;
case 4:
runQueueFour(qOne, qTwo, qThree, qFour, currentTime);
robin = 1;
break;
}
}
解決方法は?
コレクションへのアクセスと変更を同時に行っているため、for-eachループから直接行うことができない。
を使用する必要があります。
Iterator
を使えば、この問題を解決できます。
LinkedList<MyProcess> q1 = new LinkedList<MyProcess>();
Iterator<MyProcess> iterator = q1.iterator();
while (iterator.hasNext()){
MyProcess mp = iterator.next();
if (mp.name.equals("xyz")){
iterator.remove(); // You can do the modification here.
}
}
関連
-
[解決済み] 文字列の巻き方
-
[解決済み] x--やx++はここで何をするのですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] 要素 'beans' の宣言が見つかりません。
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] java.util.MissingFormatArgumentException: 形式指定子 '%s' がありません。
-
[解決済み] eclipseからTomcatに物理的に発行されるmyjspはどこにあるのでしょうか?
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] アニメーションGIFの表示