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

如何在JavaSpring中立即执行@Scheduled方法,然后根据cron执行?

司马昕
2023-03-14

我有一个方法:

@Scheduled(cron="0 */5 * * * *")
public void syncRoutine() { }

所以它每5分钟运行一次。

是否可以计划一个方法在第一次立即运行,然后根据cron运行?

共有1个答案

钱志强
2023-03-14

您可以将多个@Scheduled注释与@Schedules注释组合在一起:

@Schedules(value = {
        @Scheduled(initialDelay = 15_000,
                fixedDelay = Long.MAX_VALUE),
        @Scheduled(cron = "0 */5 * * * *")
})
public void scheduleFixedDelayTask() {
    System.out.println("Fixed delay task - " +
            System.currentTimeMillis() / 1000);
}

任务将在初始延迟后第一次执行(15秒)价值我们不可能用fixedDelay=Long重复。最大值,因为让cron来做。

OR

您可以同时使用@PostConstruct@Scheduled注释:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;

@Component
public class ScheduleClass {

    @PostConstruct
    public void onStartup() {
        scheduleFixedDelayTask();
    }

    @Scheduled(cron = "0 */1 * * * *")
    public void scheduleFixedDelayTask() {
        System.out.println("Fixed delay task - " +
                System.currentTimeMillis() / 1000);
    }
}

通常,对于每5分钟运行一次的任务,您不需要添加cron,但我假设这是一个示例。

 类似资料:
  • 问题内容: 如何从此代码获得结果 通过 for循环 通常的方法是这样的 问题答案: 如果您 确实 需要 动态表名 ,那么我可能会选择 记录 类型: 结果集的 类型(它是一个 记录 数组): 执行选择并返回 结果集 实例的函数: 然后,该函数可以与类似的东西一起使用:

  • 我在下面的查询中遇到了一个错误,它给出了一个符号(在使用循环的行中)。我正在尝试开发一个函数,该函数将动态参数作为表名、列名、表id,并用于其他表。

  • 问题内容: 在JavaScript中,您可以定义立即执行的匿名函数: 您可以在PHP中做类似的事情吗? 问题答案: 对于PHP7:请参阅OhgakiYasuo的答案: 对于以前的版本:我能想到的立即执行它们的唯一方法是

  • 问题内容: 和之间有什么区别 ? 问题答案: 从根本上说,它们执行相同的操作,这是提供一种在PL / SQL中执行DDL语句的机制,这是本机不支持的。如果内存对我有用,那么在Oracle 7版本的DBMS_UTILITY软件包中可以使用EXEC_DDL_STATEMENT,而在8中仅引入本机动态SQL(EXECUTE IMMEDIATE)。 有一些区别。EXECUTEIMMEDIATE主要是关于执

  • 我正在Java的Android应用程序中工作,其中调用类并在OnCreateView方法中进行测量。然而,一旦完成,我必须自动发送他的测量结果。但我不能。是否有继承自:java.lang.对象android.app.片段的方法,可以在OncreateView进程之后执行函数。因为目前数据已经发送,但还没有时间填充。 谢谢你的帮助

  • 嗨,我正在使用Spring AOP进行日志记录,我有以下两个方面@before和@afterreturn,不幸的是,这两个方面都打印相同的响应,这里的期望是@before打印方法输入和@afterreturning打印方法输出。