有关Cron表达式的理解误区

当阅读到自己之前写的代码,发现自己之前一直对Cron表达式的理解有误,很是震惊。

在Spring配置文件中加入如下配置:

<!-- TASK -->
<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
<task:executor id="myExecutor" pool-size="5"/>
<task:scheduler id="myScheduler" pool-size="10"/>

编写如下测试代码:

package com.ylmob.yunpay.task.statistics.impl;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TestTask {
    
    private static final Logger logger = LoggerFactory.getLogger(TestTask.class);
    
    @Scheduled(cron="* 0/2 * * * ?")
    public void task(){
        logger.info("The current time is {}.", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date()));
    }

}

我以为

@Scheduled(cron="* 0/2 * * * ?")

表示从第0分钟开始,然后每两分钟执行一次,但是通过查看控制台的日志(截图如下),发现并不是执行一次,而是从第0分钟开始,每两分钟的那一分钟内的每一秒都会执行一次。

有关Cron表达式的理解误区_第1张图片

你可能感兴趣的:(有关Cron表达式的理解误区)