ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

@Schedule注解用于指定定时任务的执行时间和频率

@Schedule注解用于指定定时任务的执行时间和频率

下面是所有参数的详细解释:

second:秒,取值范围:0~59;

minute:分钟,取值范围:0~59;

hour:小时,取值范围:0~23;

dayOfMonth:月中的某一天,取值范围:1~31;

month:月,取值范围:1~12;

dayOfWeek:周几,取值范围:1~7,其中1表示周日,2表示周一,以此类推;

year:年,取值范围:1970~2099;

persistent:是否持久化,默认为true。如果为 true,表示即使在应用程序重新启动后,这些计划任务仍应该继续运行;如果为false,表示应用程序重新启动后,这些计划任务将不再运行;

info:任务的描述信息;

timezone:时区,默认值为“GMT”。

使用表达式的方式控制任务执行时间:

除了上述参数之外,@Schedule注解还支持使用表达式的方式来控制任务的执行时间。表达式的格式为 cron 表达式。该表达式定义了时间间隔和计划执行程序的规则。 cron表达式由6个空格分隔的时间字段组成。这些字段依次表示秒,分,小时,日期,月份和星期几。每个字段都有一组允许的值,以及一些特殊字符,可以用来指定执行时间的不同选项。以下是每个字段的详细说明:

1.秒(0-59):表示一分钟中的哪一秒执行任务。 例如,cron = "0/5 * * * * *"表示从0秒开始,每5秒执行一次任务。

2.分钟(0-59):表示一小时中的哪一分钟执行任务。 例如,cron = "0 0/10 * * * *"表示每10分钟执行一次任务,从0分钟开始。

3.小时(0-23):表示一天中的哪个小时执行任务。 例如,cron = "0 0 12 * * *"表示每天中午12点执行任务。

4.日期(1-31):表示一个月中的哪一天执行任务。 例如,cron = "0 0 0 25 12 ?"表示每年的12月25日零点执行任务。

5.月份(1-12):表示一年中的哪一个月执行任务。 例如,cron = "0 0 0 1 * *"表示每个月的第一天执行任务。

6.星期几(0-7,星期日=0或7):表示一周中的哪一天执行任务。 例如,cron = "0 0 0 ? * SUN"表示每个星期天执行任务。

注意:cron表达式中的“*”表示所有可能的值,而“?”表示没有指定值(通常用于日期和星期字段)。

这里是一些其他示例:

  • 0 0 0 * * * 表示每天午夜执行任务
  • 0 0 12 * * ? 表示每天中午12点执行任务
  • 0 15 10 ? * * 表示每天上午10:15执行任务
  • 0 0/5 * * * ? 表示从0秒开始,每5分钟执行一次任务

下面是一个使用@Schedule注解的例子:

@Service
public class MyTimer {@Schedule(second="*/10", minute="*", hour="*")public void execute() {System.out.println("定时任务执行了!");}
}

上面的代码表示每隔10秒钟执行一次定时任务。

返回列表