Java 定时器Timer

概要:

在开发过程中往往会用到Timer类来定时执行任务,如每天下午指定时间查看个人邮件信息,或者定时生成一些索引文件供查询信息所用。本实例介绍如何定时执行指定的任务,包括在指定的时间点执行任务、每隔某个时间段重复执行任务等。

| |目录

技术要点

    实现定时器Timer的技术要点如下:

  • 类java.util.Timer和java.util.TimerTask可以实现定时执行任务。Timer类的schedule系列方法能够在指定的时间执行TimerTask类型的任务。

  • 可以用线程来实现每隔某个时间段重复执行任务:当线程处理完任务后,进入休眠sleep状态中,等一段时间之后,再执行任务。

代码实现

package net.xsoftlab.baike;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
class WorkTask extends TimerTask {// 继承时间任务类执行任务
	private int taskID = 0;// 任务编号
	public WorkTask(int id) {// 带参数的构造方法进行初始化
		this.taskID = id;
	}
	public void run() {// 实现TimerTask中的方法
		System.out.println("执行工作任务-" + this.taskID + " ,执行时间-"
				+ new Date().toLocaleString());
	}
}
public class TextThreadTimer {// 操作运用线程实现定时器的类
	public static void main(String[] args) {// java程序主入口处
		Timer timer = new Timer();// 创建定时器类
		TimerTask task1 = new WorkTask(1);
		timer.schedule(task1, 100);// 0.1秒后执行任务
		TimerTask task2 = new WorkTask(2);
		timer.schedule(task2, 300, 1000);// 0.3秒后执行任务并每个1秒执行一次
		TimerTask task3 = new WorkTask(3);
		Date date = new Date(System.currentTimeMillis() + 1000);
		timer.schedule(task3, date);// 在指定时间1秒后执行任务
		try {
			Thread.sleep(5000);// 休眠5秒钟
		} catch (InterruptedException e) {// 捕获拦截异常
			System.out.println("出现错误:" + e.getMessage());
		}
		timer.cancel();// 终止定时器取消定时器中的任务
		System.out.println("定时器取消...");
	}
}

程序解读

  1. WorkTask类继承TimerTask类实现定时器执行指定任务,TimeTask类提供了一个抽象方法run(),所有需要用定时器执行的任务类都必须继承TimerTask并实现run()方法。

  2. Timer类的schedule()方法用于调度任务。schedule(任务,时间)方法表示在过该时间后执行任务,schedule(任务,时间1,时间2)方法表示在过时间1后执行任务并以后每隔时间2执行一次任务,schedule(任务,日期)方法表示在过该日期后执行任务。


评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
  • 全部评论(0)
资料加载中...
已关注 , 取消