newSingleThreadScheduledExecutor连续关闭造成 java.util.concurrent.RejectedExecutionException
2020-12-13 05:58
标签:拒绝策略 eth 去掉 gate from except cut rom ret 线程池默认的处理策略是AbortPolicy 用到的线程池 线程池共包括4种拒绝策略,它们分别是:AbortPolicy, CallerRunsPolicy, DiscardOldestPolicy和DiscardPolicy。 目前的需求:要在一个线程里不断跑service 执行任务,执行一两秒再跑一个service 。 一般来说,当调用了线程池的 发现并没不停生成新线程,问题基本解决。 newSingleThreadScheduledExecutor连续关闭造成 java.util.concurrent.RejectedExecutionException 标签:拒绝策略 eth 去掉 gate from except cut rom ret 原文地址:https://www.cnblogs.com/tk55/p/11160292.htmlException in thread "main" java.util.concurrent.RejectedExecutionException:
Task java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@4e25154f rejected from java.util.concurrent.ScheduledThreadPoolExecutor
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.reject(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor.scheduleAtFixedRate(Unknown Source)
at java.util.concurrent.Executors$DelegatedScheduledExecutorService.scheduleAtFixedRate(Unknown Source) ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
AbortPolicy -- 当任务添加到线程池中被拒绝时,它将抛出 RejectedExecutionException 异常。
CallerRunsPolicy -- 当任务添加到线程池中被拒绝时,会在线程池当前正在运行的Thread线程池中处理被拒绝的任务。
DiscardOldestPolicy -- 当任务添加到线程池中被拒绝时,线程池会放弃等待队列中最旧的未处理任务,然后将被拒绝的任务添加到等待队列中。
DiscardPolicy -- 当任务添加到线程池中被拒绝时,线程池将丢弃被拒绝的任务。
shutdown()
方法以后,不要提交新任务给线程池。但这里这么弄不行,发现把shutdown()去掉。
文章标题:newSingleThreadScheduledExecutor连续关闭造成 java.util.concurrent.RejectedExecutionException
文章链接:http://soscw.com/essay/32143.html