問題タブ [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.
iterator - 別の ConcurrentModificationException に関する質問
私は StackOverflow を検索しましたが、多くの ConcurrentModificationException の質問があります。それらを読んだ後、私はまだ混乱しています。私はこれらの例外をたくさん受けています。オブジェクトを追跡するために「レジストリ」セットアップを使用しています。
次のように ArrayLists にアクセスして、これらのリストにオブジェクトを追加および削除していますRegistry.effects.add(obj)
。Registry.effects.remove(obj)
再試行ループを使用して、いくつかのエラーを回避することができました。
しかし、それ以外の場合、これは実用的ではありません。drawProjectiles()
何も変更していないにもかかわらず、メソッドで ConcurrentModificationExceptions を取得し続けます。犯人は、画面に触れた場合だと思います。これにより、新しい Projectile オブジェクトが作成され、 draw メソッドがまだ反復している間に Registry.proj に追加されます。
draw メソッドで再試行ループをうまく実行できないか、オブジェクトの一部を再描画します。だから今、私は新しい解決策を見つけることを余儀なくされています..私がやっていることを達成するためのより安定した方法はありますか?
ああ、私の質問のパート 2: 多くの人が (私が使用してきたように) ListIterators を使用することを提案していますが、私は理解できませんListIterator.remove()
。イテレータ自体?
testing - Grails アプリケーションの同時変更テストを行う方法
grails アプリケーションの特定のデータを同時に変更するユーザーをシミュレートするテストを実行したいと考えています。
これを効率的に行うために使用できるプラグイン/ツール/メカニズムはありますか? それらは Grails 固有である必要はありません。複数のアクションを並行して起動できる必要があります。
ユーザーの観点から結果を確認するには、機能レベルでテストを実行することをお勧めします (これまでのところ、他のテストには Selenium を使用しています)。もちろん、統合レベルでも同時変更テストを実行することをお勧めする場合は、統合テストに加えてこれを行うことができます。
linux-kernel - 書き込みバリアがない場合、ディスクコントローラーは同じセクターへの同時書き込みをどのように処理しますか?
O_DIRECT | O_ASYNCを使用してファイルを開き、fsyncまたはfdatasyncを間にせずに、同じディスクセクターに2つの同時書き込みを行うと、Linuxディスクサブシステムまたはハードウェアディスクコントローラーは、そのディスクセクターの最終データが2番目の書き込みになりますか?
O_DIRECTがOSバッファキャッシュをバイパスするのは事実ですが、データは最終的に低レベルIOキュー(ディスクスケジューラキュー、ディスクドライバのキュー、ハードウェアコントローラのキャッシュ/キューなど)に入れられます。IOスタックをエレベータアルゴリズムまで追跡しました。
たとえば、次の一連の要求が最終的にディスクスケジューラキューに入れられた場合
エレベータコードは、バッファ1、2からそれぞれセクター1、2を合体させるために「バックマージ」を実行します。次に、ディスクに2つのディスクIOを発行します。しかし、ディスクセクター1の最終データがバッファー1からのものかバッファー3からのものかはわかりません(ドライバー/コントローラーの書き込みの並べ替えのセマンティクスについてはわかりません)。
シナリオ2:
このシナリオはどのように処理されますか?より基本的な質問は、AIOを使用してO_DIRECTモードで書き込みを行う場合、明示的な書き込みバリアがない場合、この一連の要求がディスクスケジューラのキューに入れられる可能性があるかどうかです。
はいの場合、「同じセクターへの複数の書き込みにより、最後の書き込みが最後の書き込みになる」などの順序保証はありますか?
または、その順序付けは非決定論的です[シーク時間を最適化するためにバリア内で書き込みを並べ替えるディスクコントローラー/そのキャッシュに翻弄されます]
java - 反復内のリストの変更
私たちは皆、これが違法であることを知っており、次をスローしConcurrentModificationException
ます。
しかし、これはどうですか?
theLists
の iteratornext
が呼び出される前にループが壊れているため、はありませんConcurrentModificationException
。しかし、それは合法になりますか?
android - MapActivity の ConcurrentModificationException
これはここでの私の最初の質問なので、何か問題があれば教えてください。
これで、ユーザーの場所とHelloItemizedOverlaypublic class MainMap extends MapActivity
を使用するがあります。マーカー (かなり基本的なオーバーレイ) を追加したい XML ファイルから特定の POI を取得しています。MyLocationListener
ユーザーがボタンを押すと、AsyncTask が開始されます。
MapOverlay を消去します (this.mv は MapView です):
これは、マーカーを追加するのに十分な情報がある場合に接続メソッドが呼び出すメソッドです。
それはすべての関連するコードでなければなりません。
問題は、POI を追加してマップをズーム (または移動) すると、ConcurrentModificationException
.
このサイトを検索して、同様のスレッド (たとえば、これ)を読んでいますが、自分が間違っていることを実際に見つけることができません。
自分のことを知っていれば、それはおそらく明らかなことです。
前もって感謝します、
イアルウェイン
java - Javaで散発的なConcurrentModificationExceptionを防ぐためのベストプラクティスは何ですか?
ConcurrentModificationException を防ぐリストまたはマップの反復処理のコード シーケンスはどれですか? 私たちのコードには、繰り返し散発的に ConcurrentModificationException があります。問題の原因は 2 つあります。
- 別のスレッドが反復時にリストを変更します
- ループ内で呼び出されるメソッドがリストを変更しています。
問題 1 は、ループを同期させることで解決できます。しかし、原因 2 のようにループ内でエイリアン コードが呼び出された場合、これは良くありません。
問題 2 は、リストまたはマップのコピーで解決できます。
これは、ループの前にリストまたはマップを同期ブロックにコピーする必要があることを意味します。より良い解決策はありますか?
サンプルコード:
java - Javaでは、シングルスレッドプログラムでConcurrentModificationExceptionをどのようにスローできますか?
私はこの「Freuqent Java concurrency problems」の質問を読んでいて、 java.util.ConcurrentModificationExceptionに関する回答に混乱しました。
私の理解では、これはシングル スレッド プログラムで発生する可能性があります。次のコードが例外をスローする原因は、どのように、またはどのような条件ですか?
java - 次の例外が発生します:「java.util.ConcurrentModificationException」
このコードを実行すると、「例外が発生しました: java.util.ConcurrentModificationException」が表示されます。ここにいる誰かが問題が何であるかを理解していますか?
どうもありがとう!!
java - ArrayList での java.util.ConcurrentModificationException
サーバークラスとその内部にタイマーがあり、デッドクライアント (クラッシュしたクライアント) をクリアすることになっています。以下の例に従って、タイマーがユーザーを反復処理するときにコレクションをロックしましたが、それでもこの例外が発生します (接続されたクライアントをクラッシュさせた後)。
http://www.javaperformancetuning.com/articles/fastfail2.shtml