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

如何在Spring的准确时间运行@计划作业一次?

苏波涛
2023-03-14

假设我想在2020年2月6日13:50运行一次作业。我该怎么做?

通过使用下面的表达式,我可以得出它将在今天13:50运行。但它明年也会运行。但我希望它只运行一次。

@Scheduled(cron = "0 50 13 6 2 ?")

共有2个答案

齐嘉庆
2023-03-14

如果加上年份,最后只执行一次。

@Scheduled(cron = "0 50 13 6 2 ? 2020")
牟波
2023-03-14

这是解决方案的变通方法。只需按原样使用计划注释,但使用日期。那就是

    String targetDate="2020-02-06 13:50:00";
    Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(targetDate);
    if(new Date().getTime()==date.getTime())
    {
      then put your logic here.
   }

编辑-

@Scheduled(cron = "0 50 13 6 2 ?")
public void doTheJobForOnceInSpecificTime() {
    if (Year.now().getValue() == 2020) {
        //your logic
    }
}
 类似资料:
  • 我需要在Java中创建一个计划作业或Cron作业,以便每天早上6点运行。有没有一个简单的方法。我曾尝试将Timer类与scheduledAtFixedRate方法一起使用,但只需要一个延迟。 有一种方法可以将一天作为第一次,然后是第二次 如何创建启动计划程序的特定日期和时间? 我的类需要运行作业已经扩展了TimerWork。

  • 在我问之前,Cron作业和任务调度程序将是我的最后选择,这个脚本将在Windows和Linux中使用,我更喜欢有一个编码的方法来完成这个任务,而不是把它留给最终用户来完成。 有没有Python的库可以用来安排任务?我需要每小时运行一次函数,但是,随着时间的推移,如果我每小时运行一次脚本并使用. chat,“每小时一次”将在不同的时间运行由于执行/运行脚本和/或函数固有的延迟,一小时与前一天不同。

  • 我有一个spring boot应用程序,其中有各种使用@scheduled注释的调度程序。有些调度是使用fixedRate设置的,有些则使用cron。fixedRate调度运行良好,但我注意到,在过去的一个月中,cron调度fire的实际时间每天会有1-2个小时的变化。 即cron设置为 会在凌晨3点开火而不是凌晨2点。也不是每天都在发生。它会连续几天同时运行,然后发生一些事情,每次运行时它会关闭

  • 我在context.xml文件中定义了一个Spring调度任务,它每分钟运行一次。该任务调用postgres存储过程。存储过程运行时可以持续一分钟以上。如果当前运行没有完成,spring框架会调用相同的调度程序吗?谢谢,

  • 我希望每天早上9点完成一项任务。我得到了一些有趣的结果。目前我的工作是这样的: 这是怎么回事?这是正确的表达吗?

  • 如何确保作业在运行时,不允许同时再次运行? 我们有一个BJ,它需要1个小时来处理提要和填充临时表。这个BJ的第一步是清除临时表并开始从Main store前表填充数据。 考虑一个场景,当BJ启动时(第一次运行),如果我们再次启动BJ,作为第一步的一部分,它将从临时表中删除内容。 那么,请建议我如何在第一次执行之前保留第二次执行?