Java 定时器 Timer 定时任务 TimerTask 快速入门

通俗一点讲,想要做一个定时任务,要具备两个东西——定时器(Timer)和任务(TimerTask)。

Timer

一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

 注意:与每个 Timer 对象相对应的是单个后台线程,用于顺序地执行所有计时器任务。计时器任务应该迅速完成。如果完成某个计时器任务的时间太长,那么它会“独占”计时器的任务执行线程。因此,这就可能延迟后续任务的执行,而这些任务就可能“堆在一起”,并且在上述不友好的任务最终完成时才能够被快速连续地执行。 

TimerTask

 表示一个定时任务,它是一个抽象类,实现了Runnable,具体的定时任务需要继承该类,实现run方法(每次执行的代码放到这里面)。
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;

public class TimerTaskTest extends TimerTask {
	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	@Override
	public void run() {
		System.out.println("现在上海时间:"+df.format(new Date()));
	}

}
import java.util.Timer;


public class Test {


	public static void main(String[] args) {
		Timer timer = new Timer();
		//timer.schedule(task, delay, period)
		//delay为long,period为long:从现在起过delay毫秒以后,每隔period 毫秒执行一次。
		timer.schedule(new TimerTaskTest(), 1000, 1000);
	}


}
现在上海时间:2018-07-02 17:35:27
现在上海时间:2018-07-02 17:35:28
现在上海时间:2018-07-02 17:35:29
现在上海时间:2018-07-02 17:35:30
现在上海时间:2018-07-02 17:35:31
现在上海时间:2018-07-02 17:35:32
//以下是几种调度task的方法: 
timer.schedule(task, time); 
// time为Date类型:在指定时间执行一次。 
timer.schedule(task, firstTime, period); 
// firstTime为Date类型,period为long 从firstTime时刻开始,每隔period毫秒执行一次。 
timer.schedule(task, delay) 
// delay 为long类型:从现在起过delay毫秒执行一次 
timer.schedule(task, delay, period) 
// delay为long,period为long:从现在起过delay毫秒以后,每隔period 毫秒执行一次。

你可能感兴趣的:(Java)