1.对于springboot项目而言。
2.springboot主程序要加上@EnableScheduling注解,要执行的任务要加上@Scheduled注解。
3.@Scheduled注解里面有个cron表达式,如下粗略讲下cron表达式的用法。
cron表达式可含6个或者7个域
秒 分钟 小时 一个月的第几天 第几个月 一周的星期几
秒 分钟 小时 一个月的第几天 第几个月 一周的星期几 年
" * " 表示匹配任意值,适用于所有的域
" / " 表示指点的时间后每隔一段时间执行一次任务,比如2/5,当前时间2秒后每隔5分钟都执行一次任务
" - " 表示一个范围,比如3-6,在3秒后到6秒期间都会执行任务
" , " 表示枚举,比如3,5,7,在第3秒,第5秒和第7秒各执行一次任务
" ?" 只适用于一个月的第几天和一周的星期几这两个域,代表匹配任意值
3.1) 例子一
每天早上10点执行一次任务
0 0 10 * * ?
每天中午12点半执行一次任务
0 30 12 * * ?
每月的1号早上10点执行一次任务
0 0 10 1 * ?
每天的9点30分到50分之间执行任务
0 30-50 9 * * ?
每天的9点,11点和13点各执行一次任务
0 0 9,11,13 * * ?
每天早上9点之后,每隔一个小时执行一次任务
0 0 9/1 * * ?
每年的3月1号的中午12点15分15秒执行一次任务
15 15 12 1 3 ?*
3.2)例子二:当前时间两秒后每隔三秒都执行一次任务(2/3 * * * * ?)
1.springboot主程序
package com.qingfeng.scheduledemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class ScheduledemoApplication {
public static void main(String[] args) {
SpringApplication.run(ScheduledemoApplication.class, args);
}
}
2.定时任务所在的类
package com.qingfeng.scheduledemo.test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
/**
* @author:wfj
* @date:Created in 14:03
* @version:1.0
*/
@Service
public class CrobJob {
private static final Logger logger = LoggerFactory.getLogger(CrobJob.class);
@Scheduled(cron = "2/3 * * * * ?")
public void task() {
logger.info("HelloWorld");
logger.info(System.currentTimeMillis() / 1000 +"");
}
}
3.结果