定时器(Timer)的讲解

一:如何使用

自定义一继承于TimerTask的类,并重写其run()方法即可。也可以采取匿名类的形式,直接重写其run()方法。

二:方法

TimeTask有一抽象方法run(),其作用就是用来放我们处理的逻辑任务。
Timer有一schedule()方法,重载参数和另外两个方法如下表:

重载方法/常用方法作用
schedule(TimerTask task, Date time)执行task一次,执行时间为time
schedule(TimerTask task, Date firstTime, long period)执行task,时间为firstTime, 每次执行间隔为period,单位毫秒
schedule(TimerTask task,long delay)执行task一次,延迟执行时间为delay,单位毫秒
schedule(TimerTask task,long delay,long period)执行task,延迟执行时间为delay,每次执行间隔为period,单位毫秒
cancal()终止此计时器,丢弃所有当前已安排的任务
purge()从此计时器的任务队列中移除所有已取消的任务

三:例子

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

class Delay extends TimerTask{
	int times;
	@Override
	public void run() {
		// TODO Auto-generated method stub
		times++;
		System.out.println("Delay Task is delaying to do. " + times);
		// If launch times big than 10, then cancel the TimeTask.
		if(times >= 10){
			this.cancel();
		}
	}
	
}

public class DelayTask {
	public static void main(String args[]){
		Timer timer = new Timer();
		timer.schedule(new Delay(), 0, 1000);
		
	}
}

或者

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

public class DelayTask {
	public static void main(String args[]){
		TimerTask timerTask2 = new TimerTask(){
			public void run(){
				System.out.println("Unknown Task is delaying to do.");
			}
		};
		
		Timer timer2 = new Timer();
		timer2.schedule(timerTask2, 1000);
		
	}
}

四:知识补充

读者看到“重写run()”方法时或许已经猜到Timer与Thread是否有某种关系。事实上Timer内部利用了一个后台线程 TimerThread 有计划地执行指定任务。一个 Timer 对象对应的是单个后台线程,其内部维护了一个 TaskQueue,用于顺序执行计时器任务 TimeTask。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值