JAVA定时器 (Timer TimerTask)学习

Timer类,是一种工具类,可安排任务执行一次或者定期重复重复执行

 

入门例子一:

 

public class OneTime {
	public static void main(String[] args) {
		Timer timer = new Timer();
		TimerTask task = new MyTimerTask();
		Date date = new Date(System.currentTimeMillis() + 3000);
		//过三秒之后执行任务
		timer.schedule(task, date);
	}
}

public class MyTimerTask extends TimerTask{
	@Override
	public void run() {
		System.out.println("MyTimerTask");
	}
}

 

上面的例子可以合并为一个

 

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

public class TimerTaskDemo {
	
	public static void main(String[]args){
		Timer timer = new Timer();
		timer.schedule(new TimerTask() {
			@Override
			public void run() {
				System.out.println("MyTimerTask");
			}
		}, new Date(System.currentTimeMillis() + 3000));
	}
	
}

  

备注:使用定时器让我联想到使用线程,只是显示是继承Thread类或者是Runnable接口,而定时器是继承TimerTask这个抽象类(必须要实现run()方法)

 

 

定时器取消的例子:

 

public class RepeatDo { 
	public static void main(String[] args) { 
	Timer timer=new Timer(); 
	//创建一个计时器过两秒后每隔3S 执行一次操作 
	timer.schedule(new MyTimerTask1(1,timer), 2000, 1L*3000); 
	} 
} 

public class MyTimerTask1 extends TimerTask{
	int round_id;
	Timer timer;
	public MyTimerTask1(int round,Timer timer) {
		this.round_id = round;
		this.timer = timer;
	}
	@Override
	public void run() {
		this.round_id++;
		System.out.println("repeat : " + this.round_id);
		//如果重复了4次之后就取消定时器
		if(this.round_id == 5){
			//根据传递过来的timer取消定时功能
			timer.cancel();
		}
	}
}

 

 

你可能感兴趣的:(timer,timertask,task)