Exception in thread "testTimer" java.util.concurrent.RejectedExecutionException: Task qatest.perform.PerformTest$$LambdaAbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379)
提交的任务被线程池拒绝了。
在一个定时器中,会去定时执行一个函数。该函数中会从一个线程池中取一个线程去执行一段代码。从错误看,意思是线程池的大小是17,活跃的线程数是17,排队的任务是0,完成的任务是23。所以意思是线程池已经没有可以执行的线程了,所以拒绝了提交的任务吗?还是因为Shutting down,意思是线程池正在关闭中,所以拒绝提交任务?
当 Executor 已经关闭,并且 Executor 将有限边界用于最大线程和工作队列容量,且已经饱和时,在方法 execute(java.lang.Runnable) 中提交的新任务将被拒绝。在以上两种情况下,execute 方法都将调用其 RejectedExecutionHandler 的 RejectedExecutionHandler.rejectedExecution(java.lang.Runnable,。(https://blog.csdn.net/zirconsdu/article/details/8634346
)
ThreadPoolExecutor 实现其他线程池的核心。