美文网首页
线程池拒绝策略

线程池拒绝策略

作者: 大山村长 | 来源:发表于2020-01-07 14:35 被阅读0次

一般在jdk新建线程池的时候,都会配置好几个参数:corePoolSize、  maximumPoolSize、 keepAliveTime、  TimeUnit、BlockingQueue 、 RejectedExecutionHandler; 除了核心线程数、最大线程数、存活时间外,另外两个参数BlockingQueue 、 RejectedExecutionHandler一般的开发工程一般不怎么了解和关注,一般只限于使用。

今天这里就针对RejectedExecutionHandler做一下分享:

在ThreadPoolExecutor类里加入了四个拒绝策略方法,分别是CallerRunsPolicy、AbortPolicy、DiscardPolicy、DiscardOldestPolicy,每一种策略都有特定的使用场景。

CallerRunsPolicy,源码英文注解:

A handler for rejected tasks that runs the rejected task  directly in the calling thread of the {@code execute} method, unless the executor has been shut down, in which case the task is discarded.

就是在当前调用该线程被线程池拒绝后,就会直接在当前线程中调用执行;如果该线程已经关闭,则该线程机会被丢弃。

AbortPolicy。源码注释

该策略,很简单,是构造线程池默认的拒绝策略。当线程池用完后,就会直接丢弃任务,并抛出异常。

DiscardPolicy与AbortPolicy一样,同样是抛弃当前任务线程,但不一样的地方是discardPolicy是静默丢弃,不抛出异常,对于业务时无感知的。

DiscardOldestPolicy与DiscardPolicy同时静默抛弃任务,但是DiscardOldestPolicy是抛弃最先进入队列的任务,并不抛异常,并请求重试,如是,线程已经关闭,则丢弃该任务

相关文章

  • Java线程池拒绝策略

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

  • ThreadPoolExecutor

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

  • 多线程juc线程池

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

  • ThreadPoolExecutor的RejectedExecu

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

  • 线程池

    线程池执行过程 线程池生命周期 线程池分类 阻塞队列 拒绝策略 - ThreadPoolExecutor.Abor...

  • 线程池概述

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

  • 信号量用法:锁

    用于dubbo线程池满的拒绝策略

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

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

  • 2021-05-28

    线程池拒绝策略1.abortpolicy 默认的拒绝策略,会丢弃任务,抛出异常RejectedExecution...

  • JUC线程池(5):线程池拒绝策略

    拒绝策略介绍 线程池的拒绝策略,是指当任务添加到线程池中被拒绝,所采取的措施。当任务添加到线程池中之所以被拒绝,可...

网友评论

      本文标题:线程池拒绝策略

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