需求:
经常遇到这样的需求:要求每天执行一次任务,执行任务时间是凌晨3点
实现:
为了便于检测,我假设的是下一分钟执行任务,每10秒重复执行。(对应现实项目:每天3点执行任务。那么就是下一个3点执行任务,并每次sleep24小时)
TimerManager.java
package cn.test.test;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
public class TimerManager {
//定义时间间隔 根据具体情况定 我假设每10s执行一次
private static final long PERIOD_DAY = 10 * 1000;
public TimerManager() {
Calendar calendar = Calendar.getInstance();
/*** 定制下一分钟执行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 3);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date date=calendar.getTime(); //第一次执行定时任务的时间
System.out.println(date);
System.out.println("before 方法比较:"+date.before(new Date()));
//如果第一次执行