ホームページ >Java >&#&チュートリアル >JavaでのConcurrentModificationExceptionを例で

JavaでのConcurrentModificationExceptionを例で

Barbara Streisand
Barbara Streisandオリジナル
2025-02-07 12:01:13875ブラウズ

ConcurrentModificationException in Java with Examples

Java MultiThreaded環境では、メソッドがリソース検出中に同時変更に遭遇した場合、例外がスローされる場合があります。この時点で、オブジェクトは非変更状態にあります。

ConcurrentModificationException以下は例外の例です

この例外は通常、次の場合に発生します ConcurrentModificationException 例外の検出と反復は、

メソッドでは定義されていません。
<code class="language-java">Exception in thread "main" java.util.ConcurrentModificationException
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:000)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:000)
    at com.journaldev.ConcurrentModificationException.ConcurrentModificationExceptionExample.main(ConcurrentModificationExceptionExample.java:00)</code>

という名前の内部フラグを使用して、速い故障したイテレーターがループ内のブロックをブロックします。
  • modCount例外アルゴリズム

このアルゴリズムは、Java環境で例外を生成する方法を示しています。いくつかのソリューションを探索するために、いくつかのJavaコードを記述します。 ConcurrentModificationException

プロセスを開始します。 java.util.ConcurrentModificationException

  1. 必要なJavaパッケージを宣言してインポートします。
  2. 公開クラスを宣言します。
  3. 文字列パラメーターを宣言します。
  4. アレイリストオブジェクトを作成します。
  5. 新しいarrayListを作成します。
  6. ArrayListを入力します。
  7. トライブロックを宣言します。
  8. 印刷リスト。
  9. イテレーターを宣言します。
  10. ループ中に使用して次の値を横断します。
  11. 反復中に値を追加します。
  12. 更新されたアレイリストを印刷します。
  13. ループ中に使用して次の値を横断します。
  14. 例外をキャッチします。
  15. 例外情報を印刷します。
  16. 値を取得します。
  17. プロセスを停止します。
  18. 例外構文

次の構文は、java環境で例外を生成する方法を示しています。 ConcurrentModificationException 上記の構文は、java環境で

例外を生成する方法を示しています。

ConcurrentModificationException

solution
<code class="language-java">// ... (代码片段省略,与原文类似,但使用更简洁的变量名和注释) ...</code>

ConcurrentModificationException

メソッド1:反復プロセス中に変更

この方法は、反復プロセス中にコレクションを直接変更します。ファーストフェイルのイテレーターが失敗すると、例外がスローされます。
  • メソッド2:iterator
および

メソッドを使用し、ループ

<code class="language-java">for (Iterator<integer> iterator = integers.iterator(); iterator.hasNext();) {
    Integer integer = iterator.next();
    if(integer == 2) {
        iterator.remove(); // 使用迭代器的remove()方法安全地移除元素
    }
}</integer></code>
  • このメソッドはメソッドを使用します。セットがマルチスレッド環境で変更されると、例外がスローされます。 next() remove()結論

ConcurrentModificationException例外は通常、コレクションが同時に変更されたときに発生します。この記事では、この例外を回避する方法について説明し、対応するJavaコードの例を提供します。 この例外は、CopyOnWriteArrayListConcurrentHashMapなどのスレッドセーフコレクションクラスと、Iteratorのremove()メソッドを使用して効果的に回避できます。

以上がJavaでのConcurrentModificationExceptionを例での詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。