小例子:每天下午五点整提醒
先写个初级版练练手:每三秒钟提示一次
package com.uwo9.test06;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Test01 {
public static void main(String[] args) {
// 计时器
Timer timer = new Timer("计时器");
// 任务
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println(new Date());
System.out.println("闹钟响了,该起床了");
}
};
Date time = new Date(117, 10, 7, 17, 00);
// timer.schedule(task, time);
timer.schedule(task, time, 3000);
}
}
现在来写升级版:
package com.uwo9.test06;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Test02 {
// 时间间隔(一天)
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();// 使用默认时区和语言环境获得一个日历
calendar.set(Calendar.HOUR_OF_DAY, 17);// 时
calendar.set(Calendar.MINUTE, 0);// 分
calendar.set(Calendar.SECOND, 0);// 秒
Date date = calendar.getTime();// 第一次执行任务的时间
// 如果第一次执行任务的时间小于当前时间,此时要在 第一次执行定时任务的时间加一天,
// 以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
calendar.add(Calendar.DATE, 1);
date = calendar.getTime();
}
// 计时器
Timer timer = new Timer("计时器");
// 任务
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println(new Date());
System.out.println("上课啦!快点敲代码!");
}
};
timer.schedule(task, date, PERIOD_DAY);
}
}