您的位置:首页 > 编程语言 > Java开发

java定时执行任务--Timer的使用

2018-03-17 00:06 513 查看

执行任务体

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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: