java - Runnable 执行时间为每个 cron tick 两次

标签 java spring spring-boot tomcat

我知道 scheduleProcess 在开始时执行一次。 然后它安排任务每 3 分钟使用 cron 执行一次。 第一次执行 cron 后一切正常。 但每次都会有两倍的 otherMethod 调用。 我使代码更简单。

import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.support.CronTrigger;

 public void scheduleProcess() {
        Runnable otherMethod = () -> orderSending(); 
        Runnable task = () -> runAs("status", otherMethod);
        scheduledTasks.add(taskScheduler.schedule(task, new CronTrigger("* */3 * * * *")));
    }

public void runAs(String processName, Runnable runnable) {
        System.out.println(processName);
        try {
            runnable.run();
        } finally {
            System.out.println("test2");
        }
    }

public void orderSending() { // this executes times two every cron tick
        System.out.println("...");
    }

Java 8,SpringBoot 2.0.3,在 tomcat 8 中作为 war 运行。

最佳答案

计划:

0 0/3 * * * *

使代码按预期运行。

计划:

* */3 * * * * 

做出这种奇怪的行为。

关于java - Runnable 执行时间为每个 cron tick 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58397950/

相关文章:

java - 如何在使用 BlackBerry BrowserSession 时抑制浏览器顶部栏

java - 从命令行使用 Ivy 时,如何让 Ivy 将依赖项复制到 lib 目录?

spring - Spring/GitHub/Docker-错误:jarfile无效或损坏

java - 为什么 Spring MVC 应用程序不显示?

java - Spring boot 选择了错误的 CorsFilter

java - 如何创建一个可以作为窗口服务运行的java应用程序?

java - Eclipse + GWT -> 开发模式内存不足

java - 使用切面时未调用 Spring Boot RestController 的构造函数

java - Spring 启动 java.sql.SQLException : Field 'id' doesn't have a default value

java - 无法使用 Spring Boot 进行 header 交换将消息发布到 RabbitMQ