【问题标题】:Rejected Execution Exception拒绝执行异常
【发布时间】:2020-04-27 02:46:01
【问题描述】:

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

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

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

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建minimal reproducible example

标签: java multithreading netbeans


【解决方案1】:

如果不查看代码,我们无法真正告知您有关问题的更多信息。如果您查看异常,则它清楚地表明线程已终止并且它们的活动计数为零。即使在关闭执行程序之后,您似乎也在尝试使用执行程序处理更多代码。您是否尝试在通话后添加更多任务executor.shutdown()

根据文档,在方法 execute(Runnable) 中提交的新任务将在 Executor 已关闭时被拒绝,并且当 Executor 对最大线程和工作队列容量使用有限界限并且已饱和时也会被拒绝。在任何一种情况下,execute 方法都会调用其 RejectedExecutionHandler 的 RejectedExecutionHandler.rejectedExecution(Runnable, ThreadPoolExecutor) 方法。

在此处查看文档:https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html

【讨论】:

    【解决方案2】:

    老问题,但我遇到了问题,@lambad 的评论挽救了我的一天。我有这段代码:

    ttlExecutorService.schedule(new Runnable() {
        public void run() {
    ...
    ...
    ...
        }
    }, 1, TimeUnit.MINUTES);
    
    ttlExecutorService.shutdown();
    

    我删除了关闭调用,不再抛出异常

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 2015-05-26
      • 2012-05-19
      • 2011-04-02
      • 2014-11-19
      • 2014-04-06
      相关资源
      最近更新 更多