如何在某些方法完成后 start/stop @Scheduled 任务

How to start/stop @Scheduled task after certain method finishes

我有一个计划任务,它在应用程序上下文加载时开始工作,并且 运行 一直持续到程序结束。

我想节省一些资源和 运行 仅在需要时执行计划任务。

这是我想象中的抽象代码。

@EnableScheduling    
public class Scheduling {
    
        @Scheduled(fixedRate = 1000)
        public void scheduledTask() {
           log.info("scheduled task has been started");
        }
    
        public void triggerStart() {
           log.info("after this @Scheduled task will start working");
        }
    
        public void triggerFinish() {
           log.info("after this @Scheduled task will stop working");
        }
}

我很好奇有没有可能达到这样的结果?

一个非常简单的方法是添加一个布尔开关:

@Scheduled(fixedRate = 1000)
public void scheduledTask() {
   if (enabled) {
       log.info("scheduled task has been started");
   }
}

public void triggerStart() {
   enabled = true;
   log.info("after this @Scheduled task will start working");
}

public void triggerFinish() {
   enabled = false;
   log.info("after this @Scheduled task will stop working");
}