有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java拒绝执行异常

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

java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask@419a9977 rejected from java.util.concurrent.ScheduledThreadPoolExecutor@2522cdb9[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2123929]

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


共 (2) 个答案

  1. # 1 楼答案

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

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

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

  2. # 2 楼答案

    如果不查看代码,我们就无法真正向您提供有关问题的更多信息。如果您查看异常,那么它清楚地表明线程已终止,并且其活动计数为零。即使关闭了executor,您仍然试图使用executors处理更多的代码。您正在尝试在调用executor.shutdown()之后添加更多任务吗

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

    看看这里的文档:https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html