Java Set を同時に変更すると、ConcurrentModificationException が発生します。問題は、スタック トレースが、特定の Map イテレータで変更が発生したことを示していることです。マップはJavaでセットを実装するために使用されることを理解しましたが、これらの詳細は実装の内部にあります。内部 Map iterator Exception は、返されるべき Set Iterator 関連の例外内に適切にラップされている必要があると思います。
私は理にかなっていますか、それとも何かが欠けていますか? コード内に存在しない不完全な Map 操作を見つけようとして 2 日間を費やしたところ、問題の原因となっている Set 操作を最終的に見つけました (論理的なプロセスやドキュメントではなく、試行錯誤を通じてズームインしました)。どうすればこのようなフラストレーションを避けることができるのだろうか。
-----------UPDATE-------------- 私の質問は、同時実行を正しく行う方法に関するものではありません。私の質問は、このような役に立たないスタック トレース メッセージに惑わされないようにする方法です。Map Iterator 例外は、実際の SetIterator 例外の代わりにスタック トレースに表示されるビジネスはありません。これは、ユーザーの観点から意味があります。