我正在使用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在代码中的唯一位置。
经过搜索和尝试一切,我无法复制这个问题,但它偶尔不断发生。也许有人知道它可能是什么,或者能给我指明方向。
我非常感谢你的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!