問題タブ [concurrentmodification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
152 参照

java - ConcurrentModificationException に対抗するにはどうすればよいですか?

次の問題がある場合: 強化された for ループを使用しているリストがあります。リストから sth を削除するたびに、ConcurrentModificationException が発生します。この例外がスローされる理由はすでにわかっていますが、コードを変更して機能させる方法がわかりません。これは私のコードです:

私もこの実装を試しました。

どちらも機能していません...

一般的に使用される標準的なソリューションはありますか? (うまくいけば、それは明らかではありません:D)

0 投票する
1 に答える
1040 参照

java - Java HashMap のフェイル ファスト動作

動作がjava.util.HashMap何であるかを学ぶために遊んでみました。fail-fast

結果が出ました

私もイテレータを使ってみました

どちらの場合も取得できませんでしConcurrentModificationExceptionた..これは(javadocから)

一般的に言えば、同期されていない同時変更が存在する場合にハードな保証を行うことは不可能であるため、反復子のフェイルファスト動作は保証できません。フェイルファスト イテレーターは、ベスト エフォート ベースで ConcurrentModificationException をスローします。

私は言う別のスレッドをチェックしました、それはスローConcurrentModificationExceptionします..どう思いますか?

0 投票する
3 に答える
3887 参照

java - ConcurrentModificationException の処理方法

クールダウン タイマーから ConcurrentModificationException を取得しています。次のように、スレッドを使用して毎秒値を減らします。

したがって、毎秒、すべてのプレーヤーのクールダウンが 20 ずつ減少するはずですが、問題は、特に多くの人がオンラインになっている場合、プログラムの実行中に数時間ごとに CME を取得することです. まだリストを変更している場合、現在の操作が完了するまで待機し、一種の変更キューを作成するようにするにはどうすればよいですか? ありがとう!スタック トレースは次のとおりです。

13行目は for ループの始まりです...

0 投票する
6 に答える
4837 参照

java - Java:セットの内容が変更されている間、セットを反復処理します

セットを反復処理したいのですが、セットの内容は反復中に変更されます。イテレータが作成された時点で元のセットを反復処理し、セットに追加された新しい要素を反復処理しないようにします。これはどのように可能ですか?これはsetのデフォルトの動作ですか、それともどうすればこれを実現できますか?

私が考えることができる1つの方法は、変更されない元のセットから新しいセットを取得することですが、これはエレガントではないようであり、より良い解決策があるはずです。

0 投票する
2 に答える
1886 参照

hibernate - 休止状態での同時更新

user_1 と user_2 が、id = 101、name = Rahul、accountBalance = 1500 の従業員に同時にアクセスしたとします。そのため、両方のユーザーが上記の値を持つ従業員を手にしています。User_1 は accountBalance に 1000 を追加し、従業員を更新しました。彼の残高は現在データベースで 2500 です。

そして、user_1 が従業員を更新した直後に、user_2 が口座残高に 500 を追加します。そのため、現在 user_2 の手元にある従業員の口座残高に 500 が追加されます。したがって、1500+500 = 2000 です。

しかし、実際には (1500+1000)+500 = 3000 のはずです。

この問題は、休止状態のJavaでどのように処理されますか?

ビジネス メソッド updateEmployee() で最新の値をもう一度確認してから、その新しい accountBalance に金額を追加しますか?

この状況を適切な方法で処理するのを手伝ってください。感謝とよろしく

0 投票する
7 に答える
22596 参照

java - このエラーを修正するにはどうすればよいですかjava.util.ConcurrentModificationException

次の行でエラーが発生します。jsonarrayに追加するプロセスを実行しています。私を助けてください。

0 投票する
4 に答える
1291 参照

java - LinkedList イテレータが同時変更例外をスローする

ListIterator が ConcurrentModificationException をスローするのを止める方法はありますか? これは私がやりたいことです:

  • 頻繁に実行される特定のメソッドを持つ一連のオブジェクトで LinkedList を作成します。
  • LinkedList 内のオブジェクトの前述のメソッドの実行を担当するスレッドの数 (N など) を設定します。たとえば、リストに k 個のオブジェクトがある場合、スレッド n はリストの n 番目のオブジェクトのメソッドを実行し、次に n+N 番目のオブジェクトに移動し、次に n+2N 番目に移動します。最初に戻るまで。

ここでの問題は、これらのオブジェクトの検索にあります。この作業を行うには、明らかに ListIterator を使用します。ただし、ドキュメントに従ってスローされる ConcurrentModificationException のおかげで、これはそれほど遠くないと予測しています。リストを変更可能にし、イテレータが気にしないようにしたい。実際、これらのオブジェクトは、リスト内の他のオブジェクトを作成および破棄することが予想されます。私はいくつかの回避策を考えました:

  • 新しい反復子を作成して破棄し、指定されたインデックスでオブジェクトを取得します。ただし、これは O(n) であり、望ましくありません。
  • 代わりに ArrayedList を使用してください。ただし、これも望ましくありません。削除は O(n) であり、リストを時々拡張する (そしておそらく縮小する?) 必要があるという問題があるためです。
  • 独自の LinkedList クラスを作成します。したくない。

したがって、私の質問です。ListIterator が ConcurrentModificationException をスローするのを止める方法はありますか?

0 投票する
3 に答える
711 参照

java - ArrayListへのアクセスの同期

任意の数までのすべての素数を並列に計算して計算しようとしています。isPrime()は現在の状態から改善できることは承知していますが、主な問題は、結果を格納しているArrayListへのアクセスを同期できないことです。ダミーオブジェクト「m」をインスタンス化して、モニターとして機能し、配列へのアクセスを制御しました。毎回java.util.ConcurrentModificationExceptionが発生するため、明らかにどこかで推論を間違えました。NB:要点

編集:提案後に完了を表示するように更新されました。

便宜上、antスクリプトを含めました:)

0 投票する
1 に答える
296 参照

java - ConcurrentSkipListSet は静的ですか?

HashSet の処理中に、concurrentModificatoin 例外が発生したため、ConcurrentSkipListSet に移行しました。同時実行の問題は解決されましたが、新しい問題が発生しました。ConcurrentSkipListSet はデフォルトで静的なようです。そうですか? 同じものを繰り返す反復子を持つ再帰関数で使用しています。次の要素が繰り返されると、同じ関数の再帰の別のインスタンスによって行われた変更が同じオブジェクトに反映されます (これは通常、各インスタンスにスタック内の独自のスペースが割り当てられる通常の再帰では当てはまりません)。そして、変更を反映させたくありません。この問題の解決策はありますか?

前もって感謝します :)

私はJavaを使用していますが、ここにコードがあります...

セット b から要素を削除しています。関数が前の状態 (while ループ内の反復子) に戻ると、元のセット b が影響を受けます。私はこれが起こることを望んでいません。誰か助けてください!:(

0 投票する
1 に答える
283 参照

java - マップでの同時変更の問題

構造の同時ハッシュマップを使用しています

指定されたマップ ( Map<String, Object>) 内で使用される Map も並行ハッシュマップですが、セットは唯一のTreeSetタイプです。

それでも、ログに次の行を追加すると、同時変更例外が発生します。

また、このマップを扱う同じクラスの他の部分でも。

このマップは、複数のスレッドによるバッチ処理で広く使用され、マップに値を挿入および削除します。使用される Java バージョンは 1.5 です。

例外は Treeset によるものだと思います。また、タイプ Set の同時処理コレクションの同様の実装がないこともわかりました。

与えられた問題に対する私の考えが正しいかどうかを確認し、この問題の解決策を提案していただければ幸いです。