Javaのスレッドプールの拒否ポリシーには、どのようなものがありますか?

Javaのスレッドプールの拒否ポリシーには、以下のようなものがあります。

  1. ThreadPoolExecutor.AbortPolicyは、デフォルトの拒否ポリシーであり、スレッドプールにタスクを追加できない場合にRejectedExecutionException例外がスローされます。
  2. ThreadPoolExecutor.CallerRunsPolicy:スレッドプールへのタスク追加に失敗した場合、そのタスクは呼び出し元に返されて実行されます。これによりスレッドプールの処理能力が低下する可能性があります。なぜなら、呼び出し元はタスクが完了するまで待たなければならず、その間は他の処理を続行することができません。
  3. ThreadPoolExecutor.DiscardPolicy:タスクをスレッドプールに追加できない場合、そのタスクを直ちに破棄し、例外をスローしません。
  4. ThreadPoolExecutor.DiscardOldestPolicy:スレッドプールへのタスクの追加に失敗した際、最も古いタスクを削除し、再度タスクを追加しようとします。

ThreadPoolExecutorのsetRejectedExecutionHandlerメソッドを呼び出すことで、スレッドプールの拒否方針を設定できます。

bannerAds