当前位置: 首页 > 知识库问答 >
问题:

Spring:取消@Scheduled注释任务[重复]

武向文
2023-03-14

我正在运行一个Spring Boot应用程序,并尝试使用@Scheduled注释以特定延迟运行两个作业。

我想在特定条件下以编程方式取消这些工作。推荐的方法是什么?以下是我的应用程序的配置:

Main.java

@SpringBootApplication
@EnableScheduling
public class Main implements CommandLineRunner {

  static LocalDateTime startTime = LocalDateTime.now();

  public static void main(String[] args) {
    SpringApplication app = new SpringApplication(Main.class);
    app.setBannerMode(Banner.Mode.OFF);
    app.run(args);
  }

  @Override
  public void run(String... args) throws Exception {
  }

}

Job1.java

@Component
public class Job1 {

  @Scheduled(fixedDelay = 10000)
  public void run() {
    System.out.println("Job 1 running");
  }

}

工作2。JAVA

@Component
public class Job1 {

  @Scheduled(fixedDelay = 10000)
  public void run() {
    System.out.println("Job 2 running");
  }

}

共有2个答案

司徒博容
2023-03-14

计划方法有一个计划好的未来。在你的方法中获得一个未来的句柄,然后你可以调用cancel来取消作业。你可以引用Spring Boot stop Scheduled Task,使用@Scheduled annotation启动,如果Spring Scheduled execution在某个固定时间后挂起,就停止它

杨利
2023-03-14

您需要通过Spring TaskScheduler接口的一个实现来调度任务,例如TimerManager TaskScheduler或ThreadPoolTaskScheduler,以获取ScheduledFuture对象。

public interface TaskScheduler {

    ScheduledFuture schedule(Runnable task, Trigger trigger);

    ScheduledFuture schedule(Runnable task, Date startTime);

    ScheduledFuture scheduleAtFixedRate(Runnable task, Date startTime, long period);

    ScheduledFuture scheduleAtFixedRate(Runnable task, long period);

    ScheduledFuture scheduleWithFixedDelay(Runnable task, Date startTime, long delay);

    ScheduledFuture scheduleWithFixedDelay(Runnable task, long delay);

}

对象提供了取消任务的方法uture.cancel()

 类似资料:
  • 本文向大家介绍uwp 取消注册任务,包括了uwp 取消注册任务的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 如何定制spring中注释的异常处理? 我有Cron作业,这些作业将在服务器(Tomcat 6)中触发,当出现任何异常时,我需要进行一些处理。 Spring版本3.2 Tomcat服务器6

  • 问题内容: 我这里有一个简单的测试方法,该方法设置为每5秒运行一次,但确实可以,但是查看System.out可以看到它似乎在做一些奇怪的事情。 输出: 为什么每次都运行TWICE (出现)? 问题答案: 该注释位于此链接的第25.5.1节下,内容如下: 确保不要在运行时初始化同一@Scheduled注释类的多个实例,除非你确实希望为每个此类实例计划回调。与此相关,请确保不要在使用@Schedule

  • 我试图在springboot上同时运行多个计划任务,但实际上它们运行队列(一个接一个,不是并行的) 这是我简单的服务: 输出: 但是,它应该是这样的: 我做错了什么? 这是我的配置:

  • 问题内容: 是否可以强制不在前面添加日期注释?我的意思是像这里的第一行: 我想完全摆脱它。除非进行 有意义的 更改,否则我的配置文件必须完全相同。 问题答案: 给定源代码或属性,不行,这是不可能的。顺便说一句,由于Properties实际上是一个哈希表,并且因此其键没有进行排序,因此无论如何您都不能依赖于属性始终保持相同的顺序。 如果有此要求,我将使用自定义算法来存储属性。使用Properties