线程学习笔记(八)-定时器(Timer)

来源:互联网 发布:程序员一般转行做什么 编辑:程序博客网 时间:2024/06/15 10:57
在开发过程中往往会用Timer类来定时执行任务,如每天晚上定时执行批量服务。本实例介绍如何定时执行指定的任务,包括在指定的时间点执行任务、每隔某个时间段重复执行任务等等。类java.util.Timer和java.util.Timertask可以实现定时执行任务。Timer类的schedule系列方法能够在指定的时间执行TimerTask类型的任务。
package core;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Timer;import java.util.TimerTask;class WorkTask extends TimerTask{private int taskID=0;//任务编号public DateFormat dateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss SSS");public WorkTask(int id){//带参数构造方法进行初始化this.taskID=id;}@Overridepublic void run() {System.out.println("执行工作任务-"+this.taskID+", 执行时间-"+dateFormat.format(new Date().getTime()));}//继承时间任务类}public class TextThreadTimer {public static void main(String[] args) {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);try {Thread.sleep(5000);} catch (InterruptedException e) {System.out.println("出现错误: "+e.getMessage());}timer.cancel();System.out.println("定时器取消...");}}

源程序解读
(1)WorkTask类继承TimerTask类实现定时器执行指定任务,TimerTask类提供了一个抽象方法run(),所有需要用定时器执行的任务类都必须继承TimerTask并实现run()方法。
(2)Timer类的schedule()方法用于调度任务。schedule(任务,时间)方法表示在过该时间后执行任务,schedule(任务,时间1,时间2)方法表示在过时间1后执行任务并以后每隔时间2执行一次任务,schedule(任务,日期)方法表示在过该日期后执行任务。



原创粉丝点击