读书人

求解答,该如何解决

发布时间: 2012-05-23 13:44:13 作者: rapoo

求解答
public class TimerManager {


//时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;

public TimerManager() {
Calendar calendar = Calendar.getInstance();

/*** 定制每日2:00执行方法 ***/


calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

Date date=calendar.getTime(); //第一次执行定时任务的时间

//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
date = this.addDay(date, 1);
} //为什么 时间比当前时间的时候加一天 而不是执行的时间大于 当前的时间 加一天呢??


Timer timer = new Timer();

NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schedule(task,date,PERIOD_DAY);
}


// 增加或减少天数
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}

}
红色字体部分

[解决办法]

探讨
引用:
这是啥问题?
如果当前时间大于执行定时任务的时间说明该任务已经执行过了。
加一天,修改执行时间。开启新的任务,执行明天的任务。
你执行时间小于你当前时间 又何必再加一天呢

读书人网 >J2SE开发

热点推荐