# Spring 定时任务
package cn.king.glasses.modular.system.schedule;
import java.util.Date;
import java.util.List;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @version: 1.0.0
* @Description: 定时任务,更新单位人员信息存放到 redis
* @author fxg
* @date: 2018年9月15日 上午10:59:48
*
*/
@Component
@Lazy(false)
@EnableScheduling
public class UserCacheSchedule {
private static Boolean RUNNING = false;
/**
* @Description:
* @author fxg
* @date: 2018年9月15日 上午11:02:39
* @param: initialDelay: 开始第一次时延时 2 秒
* @param: fixedDelay: 1000 * 60 * 30 每 30 分钟执行一次
*/
@Scheduled(cron = "0 0/30 * * * ?")
public void init() {
if (!RUNNING) {
System.out.println(new Date() + ": 定时任务开始");
RUNNING = true;
// 执行任务
doTask();
RUNNING = false;
System.out.println(new Date() + ": 定时任务结束");
}
}
/**
* 任务主体
* @Description:
* @author fxg
* @date: 2018年9月15日 上午11:07:36
*/
private void doTask() {
}
}
表达式cron的含义:
按顺序依次为:
秒(0~59)
分(0~59)
时(0~24)
天(0~31)(需要考虑每月对应的天数)
月(0~11)
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年份(1970~2099)
例子:
"0 0 * * * *" 表示每小时0分0秒执行一次
"*/10 * * * *" 表示每10秒执行一次
"0 0 8-10 * * *" 表示每天8,9,10点执行
"0 0/30 8-10 * * *" 表示每天8点到10点,每半小时执行一次
"0 0 9-17 * * MON-FRI" 表示每周一到周五,9点到17点的0分0秒执行一次
"0 0 0 25 12 ?" 表示每年圣诞节(12月25日)0时0分0秒执行