我在线程运行时在日志文件中收到此错误,我不知道这个错误发生在哪里,因为线程没有停止并处理数据而没有问题,只有我出现此错误的问题多次在日志文件中
java.util.concurrent.RejectedExecutionException:Task java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@419a9977 被拒绝了 java.util.concurrent.ScheduledThreadPoolExecutor@2522cdb9 [终止, pool size = 0,活动线程= 0,排队任务= 0,已完成任务= 2123929]
我做了一些研究,我发现在某些地方我关闭了任务,但这根本没有发生。
答案 0 :(得分:1)
如果不查看代码,我们无法真正告知您有关此问题的更多信息。如果查看异常,则会明确指出线程已终止且活动计数为零。即使在关闭执行程序之后,您似乎也在尝试使用执行程序处理更多代码。您是否尝试在通话executor.shutdown()
根据文档,当Executor关闭时,以及当Executor对最大线程和工作队列容量使用有限边界并且已经饱和时,将拒绝方法execute(Runnable)中提交的新任务。在任何一种情况下,execute方法都会调用其RejectedExecutionHandler的RejectedExecutionHandler.rejectedExecution(Runnable,ThreadPoolExecutor)方法。
请查看此处的文档:https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html
答案 1 :(得分:0)
旧问题,但是我遇到了问题,@ lambad的评论使我省了很多时间。我有这段代码:
ttlExecutorService.schedule(new Runnable() {
public void run() {
...
...
...
}
}, 1, TimeUnit.MINUTES);
ttlExecutorService.shutdown();
我删除了关闭调用,并且不再引发异常