Javaスレッドプールのリジェクトポリシーとは?
Javaスレッドプールのリジェクトポリシーとは、スレッドプールがいっぱいで新しいタスクを受け入れられない場合の処理方法のことです。通常、スレッドプールが新しいタスクを処理できない場合に選択できるリジェクトポリシーは次のとおりです。
- AbortPolicy(既定の方針):直接にRejectedExecutionException例外をスローし、システムの正常な動作を妨げる
- コールスレッド実行: スレッドプールがタスクを受け付けられない場合は、タスクはスレッドプールを呼び出したスレッドに実行されます。
- DiscardPolicyの処理不能タスクは破棄され、処理が行われません。
- DiscardOldestPolicy:処理されていない最も古いリクエスト(つまりキューに追加された最も古いプロセス)を破棄し、新しいプロセスを再送信します。
- RejectedExecutionHandlerインターフェースを実装し、ユーザーが独自のカスタム拒否ポリシーを作成できるようにします。
ThreadPoolExecutor クラスのコンストラクタや setRejectedExecutionHandler() メソッドを通して、スレッドプールの拒否ポリシーを指定できます。