定時任務調度工具之Timer(一)
一、什么是定時任務調度
基于給定的時間點,給定的時間間隔或者給定的執(zhí)行次數(shù)自動執(zhí)行的任務
二、Java中的定時調度工具
Timer:
由JDK直接提供,調用方式簡單,不需要jar包支持;
只能完成一些簡單的定時任務;
Timer走后臺線程執(zhí)行定時任務;
Quartz:
是OpenSymphony開源組織的開源項目,需要jar包支持;
時間控制功能遠比Timer強大和完善;
可以使用多個執(zhí)行線程執(zhí)行定時任務;
三、Timer簡介
3.1 Timer定義
有且僅有一個后臺線程對多個業(yè)務線程進行定時定頻率的調度

1.jpg
3.2 主要構件
Timer通過定時調用TimerTask來實現(xiàn)對任務的定時調度的目的。
Timer:可以理解為后臺執(zhí)行的線程
TimerTask:業(yè)務線程

2.jpg
3.3 Timer工具類詳解

3.jpg
TimerThread:對應后臺執(zhí)行的線程
TimerTask:業(yè)務線程(run方法中為業(yè)務邏輯)
TimerThread通過定期地調用隊列TaskQueue中的TimerTask里面的run方法的內容來實現(xiàn)對任務定時定頻率的調用。
四、代碼演示
1.編寫需要定時調度的業(yè)務邏輯類
package com.hcx.timer;
import java.util.TimerTask;
/**
* Created by HCX on 2017/8/28.
* 需要定時調度的業(yè)務邏輯類
*/
public class MyTimerTask extends TimerTask{
private String name;
public MyTimerTask(String inputName) {
name = inputName;
}
@Override
public void run() {
//打印當前name的內容
System.out.println("Current exec name is:" + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2.編寫定時調度類
package com.hcx.timer;
import java.util.Timer;
/**
* Created by HCX on 2017/8/28.
* 定時調度類
*/
public class MyTimer {
public static void main(String[] args){
//創(chuàng)建一個Timer實例(位于java.util包下的)
Timer timer = new Timer();
//創(chuàng)建一個MyTimerTask實例
MyTimerTask myTimerTask = new MyTimerTask("hcx");
/**
* 通過Timer定時定頻率調用MyTimerTask的業(yè)務邏輯
* 即第一次執(zhí)行是在當前時間的兩秒鐘之后,之后每隔一秒鐘執(zhí)行一次
*/
timer.schedule(myTimerTask,2000L,1000L);
}
}