このテストシナリオでは、送信されたタスク(スレッド)の数も巨大ではありません。サブミット時にExecutors.newCachedThreadPoolがjava.util.concurrent.RejectedExecutionExceptionをスローする理由
答えて
それ)。
あなたが指定した情報に基づいて、実行可能サービスをどこかにシャットダウンしてから、その呼び出し可能プログラムを送信します。 shutdown
またはshutdownNow
に電話をかけるかどうか確認し、そうであればこの時点以降にタスクを追加しないようにしてください。
さらに、デバッグを助けるために、java.util.concurrent.RejectedExecutionHandler
という独自の実装を登録することができます。エグゼキュータがタスクを受け入れることができないときはいつでも、そのrejectedExecutionメッセージが呼び出されます。そのため、原因を見つけるのに役立つ初期状態検査ロジックをいくつか追加することができます。
あなたは正しいです。私はexecutorプールを閉鎖していたコードを見つけました。ありがとう –
私はExecutors.newCachedThreadPool()
メソッドの呼び出しではどこでも参照してください。RejectedExecutionException
がスローされます。
ThreadPoolExecutor
と最大プールサイズにを呼び出すに達している:Java 6で投げているように見えるだけで3例があります。- にを同時に呼び出すと、
shutdownNow
と同時に、shutdownNow
コールでレースが失われました。 - 実行者がシャットダウンされた後に
ScheduledThreadPoolExecutor
に実行可能ファイルの実行をスケジュールしようとすると、あなたがインスタンス化する方法のコードサンプルを提供し、私たちはあなたのCallable
クラスまたはのようなものの内部の詳細を必要としないとして(IPはここに非問題にする必要がありますプールでsubmit
を呼び出す必要があります
+1可能なすべての事例をリストアップするため –
質問を洗練してください。例えば。短いテストケースを追加してください。 – Kutzi
申し訳ありませんが、IPの理由により私が共有できるコードはあまりありません。ナッツシェルでは、Callableタイプのsubmitと呼んでいます。私はこれが起こる可能性のあるシナリオを探しています。 –
特定のシナリオはありませんが、代わりにこの例外がスローされる仮想シナリオを知りたいとお考えですか?もしそうなら、あなたは「どうして...」という質問を「いつ...」と言い換えるべきですか? – akf