java从ThreadPoolTaskScheduler池Spring中删除任务
我正在使用ThreadPoolTaskScheduler和Scheduler创建任务,但是当我设置一个新任务时,我想删除其中的一个或所有任务,我该怎么做呢
@Bean
public ThreadPoolTaskScheduler createThreadPoolTaskScheduler() {
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(10);
threadPoolTaskScheduler.setThreadNamePrefix(threadPrefix);
threadPoolTaskScheduler.initialize();
return threadPoolTaskScheduler;
}
添加任务:
private final Scheduler scheduler;
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
public void addTask(){
FixedRateTask update = new FixedRateTask(this::executeOnRateMethod
, initialDelay, waitTime);
taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
scheduler.setTask(taskRegistrar.scheduleFixedRateTask(update));
}
似乎在呼唤:
taskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
taskRegistrar.scheduleFixedRateTask(update);
每次向池中添加线程,同时取消计划程序不起作用:
scheduler.getTask().cancel();
# 1 楼答案
当您计划一个未来的
ScheduledFuture<?>
将被返回。ScheduledFuture<?>
有scheduledFuture.cancel(false)
,它将取消计划的任务,您已将其放置在执行器中