java中Timer定时器的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanjian056/article/details/52711302

本博文只是简单介绍一下Timer的使用方法。适用于初学者进行参考,希望大家多多指点。废话不多说,直接上正题。

1、了解一下Timer类提供的方法

介绍几个常用的方法:

cancel() 终止此计时器,丢弃所有当前已安排的任务。

schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务。(这个只执行一次,延时执行后,不再执行)

scheduleAtFixedRate(TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后开始进行重复的固定速率执行

2、Timer示例

本示例使用的是jdk1.6.

首先我编写了一个定时任务的工具类,提供了开始定时任务和取消定时任务。

package com.bao.timerUtil;

import java.util.Timer;
import java.util.TimerTask;

/**
 * 定时任务工具类
 * @author lanJ
 *
 */
public class TimerUtil {
	//定时执行时间
	private static long TIME = 1000*6;
	private Timer timer = null; //定时类

	/**
	 * 启动定时任务
	 * @param timerTask
	 */
	public void startTimer(TimerTask timerTask) {
		if(timer == null) {
			timer = new Timer();
		}
		timer.schedule(timerTask, TIME, TIME);
	}
	
	/**
	 * 延时20秒启动定时任务
	 * @param timerTask
	 */
	public void startAtFixedTimer(TimerTask timerTask) {
		if(timer == null) {
			timer = new Timer();
		}
		timer.scheduleAtFixedRate(timerTask,1000*20,TIME);
	}
	
	/**
	 * 停止定时任务
	 */
	public void stopTimer() {
		timer.cancel();
	}
}

 然后,编写一个自己的任务类。

package com.bao.timerTask;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;

/**
 * 我的任务 说明:定时任务需要集成java.util.TimerTask类,并且重写run方法. 把你想要在定时任务中所做的事写在run方法中.
 * @author lanJ
 * 
 */
public class MyTask extends TimerTask {
	
	private String name;

	public MyTask(String name) {
		this.name = name;
	}

	@Override
	public void run() {
		System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " Hello," + this.name);
	}

}

 最后,有个测试类。

package com.bao.main;

import com.bao.timerTask.MyTask;
import com.bao.timerUtil.TimerUtil;

public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TimerUtil timerUtil = new TimerUtil();
		timerUtil.startTimer(new MyTask("lanJ"));
		timerUtil.startAtFixedTimer(new MyTask("bao"));
	}
}

 运行结果:

2012-09-10 10:01:24 Hello,lanJ
2012-09-10 10:01:30 Hello,lanJ
2012-09-10 10:01:36 Hello,lanJ
2012-09-10 10:01:38 Hello,bao
2012-09-10 10:01:42 Hello,lanJ
2012-09-10 10:01:44 Hello,bao
2012-09-10 10:01:48 Hello,lanJ
2012-09-10 10:01:50 Hello,bao
2012-09-10 10:01:54 Hello,lanJ
 2012-09-10 10:01:56 Hello,bao

通过结果可以看出bao这个定时任务是延时了20秒才执行的。

猜你喜欢

转载自blog.csdn.net/lanjian056/article/details/52711302