拒绝执行异常

时间:2017-07-19 06:41:29

标签: java multithreading netbeans

我在线程运行时在日志文件中收到此错误,我不知道这个错误发生在哪里,因为线程没有停止并处理数据而没有问题,只有我出现此错误的问题多次在日志文件中

  

java.util.concurrent.RejectedExecutionException:Task   java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@419a9977   被拒绝了   java.util.concurrent.ScheduledThreadPoolExecutor@2522cdb9 [终止,   pool size = 0,活动线程= 0,排队任务= 0,已完成任务=   2123929]

我做了一些研究,我发现在某些地方我关闭了任务,但这根本没有发生。

2 个答案:

答案 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();

我删除了关闭调用,并且不再引发异常