当前位置: 首页 > 图灵资讯 > java面试题> 金三银四精选java面试题-线程池的拒绝策略有哪些?

金三银四精选java面试题-线程池的拒绝策略有哪些?

来源:图灵教育
时间:2024-01-03 09:58:20
 

线程池的拒绝策略有哪些?

在线程池中,当提交的任务数量超过了线程池的最大容量,线程池就需要使用拒绝策略来处理无法处理的新任务。Java 中提供了 4 种默认的拒绝策略:

  • AbortPolicy(默认策略):直接抛出 runtime 异常,阻止系统正常运行。
  • CallerRunsPolicy:由提交该任务的线程来执行这个任务。
  • DiscardPolicy:直接丢弃任务,不给予任何处理。
  • DiscardOldestPolicy:丢弃队列中最老的一个请求,尝试再次提交当前任务。

除了这些默认的策略之外,我们也可以自定义自己的拒绝策略,实现RejectedExecutionHandler接口即可。

public class CustomRejectedExecutionHandler implements RejectedExecutionHandler {
    @Override
    public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
        // 自定义的拒绝策略处理逻辑
    }
}