有 Java 编程相关的问题?

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

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) 个答案

  1. # 1 楼答案

    当您计划一个未来的ScheduledFuture<?>将被返回。ScheduledFuture<?>scheduledFuture.cancel(false),它将取消计划的任务,您已将其放置在执行器中