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

Java线程池拒绝策略

作者: 明翼 | 来源:发表于2022-02-09 14:10 被阅读0次

【Java线程池拒绝任务策略】
创建线程池可以指定拒绝策略如下:

 newThreadPoolExecutor(5, 10, 5, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),

   new ThreadPoolExecutor.DiscardOldestPolicy());

一 拒绝时机
1) 调用线程池的shutdown函数,再次向线程池提交任务的时候会被拒绝。
2) 线程池已经处于饱和状态无力再执行任务(队列满了,线程数已经达到了最大线程数),如果再次提交任务会被拒绝。
二 拒绝策略
拒绝策略有以下四种:
1)AbortPolicy 策略会直接抛出RejectedExecutionException 的 RuntimeException,程序可以采用重试或放弃。
2) DiscardPolicy策略会直接默默丢失,不给你任何提示,不建议使用,容易莫名其妙丢任务。
3) DiscardOldestPolicy 策略丢弃任务队列中等待事件最长的,即最老的任务,和上一个区别是上一个丢弃的是新提交的任务,这个丢弃的是最老的任务。丢弃后就可以腾出一个队列的空位存放任务。
4) CallerRunsPolicy策略,谁提交任务谁来执行这个任务,即将任务执行放在提交的线程里面,减缓了线程的提交速度,相当于负反馈。在提交任务线程执行任务期间,线程池又可以执行完部分任务,从而腾出空间来。

拒绝策略.png

相关文章

  • Java线程池拒绝策略

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

  • 多线程juc线程池

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

  • ThreadPoolExecutor的RejectedExecu

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

  • 线程池

    Java中的多线程了解么,线程池的增长策略和拒绝策略了解么java.util.concurrent.ThreadP...

  • ThreadPoolExecutor

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

  • Java线程池-拒绝策略

    Java 在 ThreadPoolExecutor 类中为我们提供了 4 种默认的拒绝策略来应对不同的场景,都实现...

  • Java基础 -- 线程拒绝策略

    什么是线程拒绝策略 当线程池达到饱和状态时,新提交的任务需要一种处理方法,这也就出现了拒绝策略。Java中提供了四...

  • 线程池

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

  • 线程池概述

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

  • 信号量用法:锁

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

网友评论

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

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