spring threadpooltaskscheduler池大小不是配置的one-taskrejectedexception

l5tcr1uw  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(201)

我正在使用springs threadpooltaskscheduler:

private ThreadPoolTaskScheduler taskScheduler;

public void initialize() {
    taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.setPoolSize(50);
    taskScheduler.initialize();
}

然后我有几个任务(大约8个,其中每2分钟只运行2个,每天休息一次),它们不会同时超过50个线程。

ScheduledFuture<?> taskFuture = taskScheduler.schedule(ctr, ctr.getCronTrigger());

ctr是一个实现runnable的类。该类中的run函数确实有一个@async(如果这有问题,则在不知不觉中)。
问题是,一段时间后(通常是几天或几周),taskscheduler显然会“满”并拒绝所有内容:

org.springframework.core.task.TaskRejectedException: Executor [java.util.concurrent.ThreadPoolExecutor@3f09fa69[Running, pool size = 2, active threads = 2, queued tasks = 100, completed tasks = 1961]] did not accept task: org.springframework.aop.interceptor.AsyncExecutionInterceptor$$Lambda$1322/0x0000000840bce440@47226288

为什么游泳池的大小是2?我哪儿也不改。上面的代码是代码中唯一操纵/设置它的地方。上面的代码也是taskscheduler在代码中的唯一位置。
经过搜索和尝试一切,我无法复制这个问题,但它偶尔不断发生。也许有人知道它可能是什么,或者能给我指明方向。
我非常感谢你的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题