問題タブ [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.
arrays - Groovy の照合リストにより、concurrentmod 例外が発生する
まだ Groovy の使い方を学んでいますが、昨夜からこの問題に悩まされていました。なぜそれがconcurrentmod例外をスローしているのかわかりません...(Java 1.6、Groovy 1.8.4)
私は鍵のリストを持っています...
[1,2,3,4,5,6,7,8,9,10,11,12,13]
ここpartitionList(keys,3)
から取得したカスタム関数を使用してリストを照合します(java.List.Collate は使用できません。1.8.6 では使用できません)。
今、私はリストのリストを持っています...
[[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13]]
作成されたサブリストの数が奇数の場合、最後のサブリストを削除し、[12,13]
そのキーを他のサブリストに順番に再分配して作成します...
[[0,1,2,12],[3,4,5,13],[6,7,8],[9,10,11]]
最後のサブリストの値を反復するときに例外が発生します。リストを反復し、そのループでまったく異なるリストを変更しているため、理由がわかりません...
アップデート:
興味深い....関数を使用しない場合、
リストの明示的なリストに
paritionList()
置き換え
ます...
問題はなくなります。だから私は partitionList() 関数が例外を引き起こしている何かをしていると信じるようになりましたdef keyRanges = partitionList( keys, 3)
def keyRanges = [[0,1,2],[3,4,5],[6,7,8],[9,10,11],[12,13]]
java - ConcurrentModificationException を回避しながら HashMap を反復処理する方法
私は HashMap を持っています。そのタイプは、HashMap<String,HashMap<String,int>>
この HashMap を反復処理し、任意のキーの値が 0 である内側の HashMap を削除する必要があります。
このような削除によって内側の HashMap が空になる場合、内側の HashMap の対応するキーが外側の HashMap から削除されます。それを繰り返してから、要件に一致する要素を削除しようとしましたが、ConcurrentModificationException
.
次のコードを試しました:
この行で例外が発生しています: innerEnt = (Entry) innerIterator.next();
。Iterator クラスが提供する remove メソッドを試してみました。でもそれもダメ。
編集
Java docs から私はこれをよく知っていますif a thread modifies a collection directly while it is iterating over the collection with a fail-fast iterator, the iterator will throw this(ConcurrentModificationException) exception
が、まったく同じ機能が必要です。
java - イテレータの ConcurrentModificationException ヘルプ
次のコードで ConcurrentModificationException を取得します
コードを実行するとうまくいきましたが、突然例外がスローされました。リストの変更が原因だと思いますが、修正方法がわかりません
これで私を助けてください。
java - 同時変更例外を防ぐ最善の方法
次のような擬似コードを次に示します。
したがって、基本的に問題は、上記のコードにリストされていない他のオブジェクトが getSomeStuff() を呼び出して、読み取り専用の目的でリストを取得することです。これが発生すると、タイマー スレッドで concurrentmodificationexception が発生します。getSomeStuff メソッドを同期させようとしましたが、タイマー スレッドで同期ブロックを試してみましたが、それでもエラーが発生し続けました。リストへの同時アクセスを停止する最も簡単な方法は何ですか?
android - アプリをしばらく実行した後に ConcurrentModificationException が発生するのはなぜですか?
私はアプリケーションを開発しており、チャートエンジンを使用して、テストする乱数であるデータを示すチャートを描画しています。期待どおりに動作しますが、数秒実行するとクラッシュし、run() スレッドをスリープ状態にしようとするとクラッシュするようになります。それは LogCat です。
私が見る限り、問題は ConcurrentModificationException にあると思います。調査しましたが、確かに理解できません:/。
http://developer.android.com/reference/java/util/ConcurrentModificationException.html http://developer.android.com/reference/java/util/Collection.html
これは、チャートが再描画されている私の Java コードの一部です。
ありがとうございます :)
java - ベクトルからリストを削除してjava.util.ConcurrentModificationExceptionを取得します
以下のようなベクトルからリストを削除しようとしました。
}
テストを実行しているときに、以下のエラーが発生します
Iterator
これを克服するには、を使用する必要があることを知っていConcurrentModificationException
ます。効率的な方法/ベストプラクティスでどのように使用するかを教えてください。
前もって感謝します。
java - 配列リストの同時変更
Java でマルチスレッド チャットを作成しています。ユーザー u1 がユーザー u2 にメッセージを送信したが、ユーザー u2 が接続されていない場合、ユーザー u1 はメッセージをサーバーに送信し、ユーザー u2 はサーバーに接続するとメッセージを受信します。送信されないメッセージは ArrayList に追加されます。ユーザーが接続すると、保留中のメッセージの受信者かどうかを確認します。彼がいる場合、メッセージは彼に送信され、保留中のメッセージ リストから削除されます。これは私がそれを行う方法です:
これは私が得るものです:
どうすれば修正できますか?イテレータを使用しているからですか?
java - この場合、java.util.ConcurrentModificationException は大きな問題です。
呼び出したときにランダムに例外が発生することに気付いたとき、私は最終的なゲームを作成している最中でしたrepaint();
Thread
すべての原因は、さまざまなオブジェクトがさまざまなタイミングで更新され、それ自体を更新する独自のものを持っていたことです。時折、描画中にエンティティが更新されることがあります。ペイント スレッドは約 60 ~ 100 FPS で実行されますが、エンティティは約 300 ミリ秒ごとに更新されます。
これに関連して、ゲームが停止したり、その他の問題が発生したりすることはありません。
無視するのは悪い考えだとはわかっていますが、他にできることはありますか?ゲームを機能させるために考えられる唯一の解決策は、複数のスレッドを用意することです。
読んでくれてありがとう!
編集: ペイント中にエンティティを削除しようとすると、問題が発生するようです。どちらも同じリストを使用します。
java - remove() が呼び出されたが何もしなかった場合、イテレータは破損しますか?
いくつかのコレクションを繰り返し処理しremove()
ていて、何もしないようにキーがない状態で呼び出すとします。次の反復で例外が発生しますか?
java - コピー コンストラクター使用中のリストの同時変更
次のコードは、ConcurrentModificationException
またはその他の副作用を引き起こしますか?
リストのサイズが非常に大きく、上記のコードが実行されているときに別のスレッドが同時にリストを変更していることを考慮してください。