您的位置:首页 > 其它

Timer和TimerTask完成定时任务

2014-12-05 15:10 489 查看
Timer 是用来负责调度定时任务的类。 需要接受一个TimerTask 的对象,然后去执行TimerTask中定义的代码。

比如:要从今天的14:58分开始,然后每隔2秒中执行一次。

先定义 TimerTask的实例:TimerTaskTest 继承该类,并实现run 方法:

import java.util.Date;
import java.util.TimerTask;

public class TimerTaskTest extends TimerTask {

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("invoke:" + new Date().toLocaleString());
}
}


然后定义调度类,让其在14:58开始,每个三秒钟执行一次:

import java.util.Calendar;
import java.util.Timer;

public class Test {
public static void main(String[] args) {
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 14);
today.set(Calendar.MINUTE, 58);
today.set(Calendar.SECOND, 0);
Timer timer = new Timer();
timer.schedule(new TimerTaskTest(), today.getTime(), 3000);
}
}




正确执行!

若将schedule方法的最后一个参数去掉,则该方法变为 从定义的时间开始,每天均在该时间点 执行TimerTask中定义的代码。

比如:import java.util.Calendar;
import java.util.Timer;

public class Test {
public static void main(String[] args) {
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 15);
today.set(Calendar.MINUTE, 06);
today.set(Calendar.SECOND, 00);
System.err.println(today.getTime().toLocaleString());
Timer timer = new Timer();
timer.schedule(new TimerTaskTest(), today.getTime());
}
}

则将会在每天的15:06 执行TimerTaskTest中的代码。

若当前时间已经过了规定的时间,则立即执行一次。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Timer