执行任务体
package com.lei.timer;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask{
private String currentTreadName;
private int count = 0;
public MyTimerTask(String currentTreadName) {
this.currentTreadName = currentTreadName;
}
@Override
public void run() {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = format.format(calendar.getTime());
System.out.println("当前正在运行的任务为:"+currentTreadName);
System.out.println("当前时间为;"+time);
//执行10次取消
if (count>=10) {
cancel();//取消任务
}
count++;
}
}
定义Timer启动任务体
package com.lei.timer;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
public class MyTimer {
//时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
public static void main(String[] args) {
MyTimerTask task = new MyTimerTask("Timer1");
Timer timer = new Timer();
//timer.schedule(task,2000L);//两秒后执行
//timer.schedule(task,2000L,3000L);//两秒后执行,每隔三秒执行一次
/**
* 每天零点执行
*/
Calendar calendar = Calendar.getInstance();
//设置为0点0分0秒
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date date=calendar.getTime(); //第一次执行定时任务的时间
//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,
//以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
//循环执行的周期则以当前时间为准
if (date.before(new Date())) {
date = addDay(date, 1);
}
timer.schedule(task, date,PERIOD_DAY);
}
// 增加或减少天数
private static Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
}