問題タブ [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 投票する
9 に答える
77921 参照

java - 同時変更の例外

この小さなコードがあり、同時変更の例外が発生します。同時修正が実行されていないのに、なぜそれを取得し続けるのか理解できません。

0 投票する
5 に答える
7735 参照

java - GuavaMultiMapとConcurrentModificationException

これを繰り返すと、なぜConcurrentModificationExceptionが発生するのかわかりませんmultimap。次のエントリを読みましたが、すべてを理解したかどうかはわかりません。同期ブロックを追加しようとしました。しかし、私の疑問は、何といつ同期するかです。

multimapフィールドであり、次のように作成されます。

そしてこのように使用されます:

そしてこのように(私は地図上でこの部分を同期しようとしましたが、成功しませんでした)

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

java - コレクションをどのようにやり取りしますかConcurrentModificationException なしでアイテムを変更しますか?

私はこのようなことをする必要があります...

明らかに、これは ConcurrentModificationException をスローします...

だから私はこれを試しましたが、エレガント/効率的とは思えず、 Type safety: Unchecked cast from Object to T 警告をスローします

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

java - スレッド「AWT-EventQueue-0」java.util での例外

このコードを修正するにはどうすればよいですか? このエラーが何を意味するのかわかりません... for eachループ中にリストの要素が削除されたことが原因だと聞きましたが、削除しているものは何も表示されません...

jcomponent には、Graphics を渡すレイヤーと呼ばれるオブジェクトのリストがあり、レイヤーがそれ自体をペイントできるようになっています。レイヤーなどを削除することは決してないので、迷子になります。ヘルプ?

0 投票する
5 に答える
5684 参照

java - 一方のループは ConcurrentModificationException をスローし、もう一方のループはスローしないのはなぜですか?

巡回セールスマン プログラムを書いているときに、これに遭遇しました。内側のループについては、

しかし、そのリストに別のポイントを追加すると、ConcurrentModicationExceptionスローされました。

ただし、ループを次のように変更すると、

ループは例外をスローすることなく正常に実行されました。

両方とも for ループなので、一方が例外をスローするのに、もう一方が例外をスローしないのはなぜですか?

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

java - JSP タグ クラスの同期ブロック

過去数日間、次の答えを見つけようとしていますが、包括的な答えを見つけることができませんでした

問題文

Webフォームの送信を処理し、データをキャプチャしてファイルシステム内の同じファイルに書き込むカスタムJSPタグクラスがあります。すべての Web アプリケーションと同様に、これは同時にトリガーされる可能性があり、複数のスレッドがそれぞれの送信を処理するのではないかと心配しています (サーブレットがどのように機能するかは誰もが知っています)。

コード

問題: - ファイル オブジェクトは、書き込みのために 1 つのスレッドで開くことができ、同時に別のスレッドがアクセスしようとして失敗し、例外をスローする可能性があります。jspエンジンはjspタグオブジェクトのプールを持っているので、 同期(this)が機能しないのではないかと心配しており、同期(this.getClass()) に変更する必要があります 参考上記のコードはJSPカスタムタグクラスに配置されています。

編集:

質問 1:コードのブロックを同期 (this)または 同期 (this.getClass())で同期する必要があります。

質問 2: Web アプリケーションがクラスター化された環境にデプロイされている場合、同じシナリオはどのように処理されますか?

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

java - イテレータクラスとforeachコンストラクトのパフォーマンスの違い

次のコードを実行していますが、実行時にある種の同時実行例外が発生することがあります。

並行性の問題を解決するためにリファクタリングしましたが、質問につながりました。for構文をIteratorパターンに変更した場合、パフォーマンスに違いはありますか?foreachコンストラクトとIteratorクラスのアクセスレベルの違いは何ですか?

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

java - How can I iterate over an object while modifying it in Java?

Possible Duplicates:
Java: Efficient Equivalent to Removing while Iterating a Collection
Removing items from a collection in java while iterating over it

I'm trying to loop through HashMap:

... and extract every element in group0. This is my approach:

The problem here is that each call to assign() will remove elements from group0, thus modifying its size, thus causing the following error:

So... how can I loop through the elements in group0 while it's dynamically changing?

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

file-io - * nixシステムで他のプロセスがファイルに書き込むときに、ファイルに追加できません

非常に単純なコードで、一定の間隔で少量のデータをファイルに書き込むだけです。プログラムがファイルを作成してデータを追加した後、vim(またはその他のエディター)でこのファイルを開いて編集すると、プロセスがファイルを更新できなくなったようです。システムコールからエラーが返されることはありません。システムコールをトレースしてみましたが、ファイルが更新されていなくても奇妙なことは何も観察されませんでした。

各プロセスは現在のオフセットを持つ独自のファイルテーブルエントリを取得するため、私が期待していたのは、2つの非協調プロセス(おそらく文字化け)からの書き込みが散在するデータを含む出力ファイルでした。しかし、私が観察しているのは、他のエディターがファイルに書き込むと、プログラムがファイルを更新できなくなることです。

他の興味深い観察のカップル

1)出力ファイルに何かをキャットすると、プログラムは問題なく更新を続けることができます

2)自分のプログラムの複数のインスタンスが同じファイルに書き込んでいる場合、すべてが再び正常になります

複数の書き込みを防ぐために必須のロックがあることは理解していますが、その下で何が起こっているのかを理解しようとしています。また、この種のシナリオは、一部のロガー(システムログ、Apacheログなど)では正常に動作します。

この振る舞いを説明するためのアイデアはありますか?また、これをさらにデバッグする方法についてのヒントはありますか?

私のコードはとてもシンプルです: