美文网首页
线程池-参数篇:4.拒绝策略

线程池-参数篇:4.拒绝策略

作者: rock_fish | 来源:发表于2020-09-04 09:09 被阅读0次

在任务队列长度有限的情况下就会出现拒绝处理新任务的问题,需要有一种策略来处理应该加入任务队列却因为队列已满无法加入的情况。另外在线程池关闭的时候也需要对任务加入队列操作进行额外的协调处理。

接口声明如下:

public interface RejectedExecutionHandler {
    void rejectedExecution(Runnable r, ThreadPoolExecutor executor);
}

RejectedExecutionHandler提供了四种方式来处理任务拒绝策略

1、DiscardPolicy

空逻辑,丢弃任务,但是不抛出异常。如果线程队列已满,则后续提交的任务都会被丢弃,且是静默丢弃。

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
        }
2、DiscardOldestPolicy

丢弃队列最前面的任务,然后重新提交被拒绝的任务。若提交失败则循环直到成功。

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
            if (!e.isShutdown()) {
                e.getQueue().poll();
                e.execute(r);
            }
        }
3、AbortPolicy

丢弃任务并抛出RejectedExecutionException异常。

        public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
            throw new RejectedExecutionException("Task " + r.toString() +
                                                 " rejected from " +
                                                 e.toString());
        }
4、CallerRunsPolicy

由提交任务的线程处理该任务

        public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {
            if (!e.isShutdown()) {
                r.run();
            }
        }

相关文章

  • 线程池-参数篇:4.拒绝策略

    在任务队列长度有限的情况下就会出现拒绝处理新任务的问题,需要有一种策略来处理应该加入任务队列却因为队列已满无法加入...

  • 线程池概述

    为什么要使用线程池? 线程池核心参数 线程池的几种拒绝策略 execute()和submit()的区别 线程池工作...

  • 线程池-四种拒绝策略总结

    一、线程池的拒绝策略线程池中,有三个重要的参数,决定影响了拒绝策略:corePoolSize - 核心线程数,也即...

  • 【JAVA】京东二面

    1、Hashmap和Concurrenthashmap 2、线程池核心参数、拒绝策略 3、SynchroQueue...

  • Java线程池拒绝策略

    【Java线程池拒绝任务策略】创建线程池可以指定拒绝策略如下: 一 拒绝时机1) 调用线程池的shutdown函数...

  • ThreadPoolExecutor

    线程池 拒绝策略 线程池的拒绝策略,即任务被添加到线程池中被拒绝而采取的处理措施。任务被拒绝的原因可能有: 线程池...

  • 多线程juc线程池

    java_basic juc线程池 创建线程池 handler是线程池拒绝策略 排队策略 线程池状态 RUNNIN...

  • ThreadPoolExecutor的RejectedExecu

    java 线程池ThreadPoolExecutor的拒绝策略有: CallerRunsPolicy : 当线程池...

  • 并发编程之线程池

    @TOC 4. 自定义线程池 步骤1 :自定义拒绝策略接口 ThreadPoolExecutor corePool...

  • 6、线程池详解

    线程池:3大方法、7大参数、4种拒绝策略 线程池的好处: 降低资源的消耗 提高响应速度 方便统一管理线程复用、可以...

网友评论

      本文标题:线程池-参数篇:4.拒绝策略

      本文链接:https://www.haomeiwen.com/subject/nxphjktx.html