java-定時任務排程工具Timer/Quartz|springboot整合定時排程
阿新 • • 發佈:2018-12-10
什麼是定時任務排程
定時任務排程:基於給定的時間點,給定的時間間隔或者給定的執行次數自動執行任務。
兩種java定時任務排程工具卻別
Timer | Quartz |
---|---|
小弟!功能簡單,開銷小 | 大哥!強大完善 |
jdk1.5 | 需要引入jar包 |
一個後臺執行緒 | 後臺執行執行緒池 |
Timer
簡介:
有且僅有一個後臺執行緒,對多個業務執行緒進行定時定頻率的排程
主要構件:
Timer類中兩個成員變數:
- TimerThread後臺執行緒
- TaskQueue成員TimerTask[]
TimerThread的run方法來回呼叫TimerTask的run方法 總之,Timer–定時呼叫 TimerTask
實現
編寫MyTimerTask類繼承TimerTask類並重寫run()方法,然後用Timer呼叫schedule方法來執行任務
import java.util.TimerTask;
public class MyTimerTask extends TimerTask{
private String name;
public MyTimerTask(String name){
this,name = name;
}
@Override
public void run(){
System.out.println("This thread is " + this,name) ;
}
//set get
}
Timer類
public class MyTimer{
public static void main(String[] args){
Timer timer = new Timer();
MyTimerTask myTimerTask = new MyTimerTask ("name1");
//通過timer定時呼叫myTimerTask的run
//2秒之後執行,此後每3秒執行一次
timer.schedule(myTimerTask,2000L,3000L);
}
}
當然,還有其他schedule其他用法 1.timer.schedule(task,time);//time距1970年的毫秒數,只執行一次 2.timer.schedule(task,time,period);//time首次執行任務時間,每隔period毫秒再執行 3.timer.schedule(task,delay);//等待delay毫秒後,執行且僅執行一次task 4.timer.schedule(task,delay,period);/等待delay毫秒後,每隔period毫秒再執行 scheduleAtFixedRate的兩種用法(暫時理解為同上) 1.timer.scheduleAtFixedRate(task,time,period);//和上面第二種方法一樣 2.timer.scheduleAtFixedRate(task,delay,period);//和上面第四種方法一樣
其他重要函式
TimerTask的兩個函式
- cancel() 取消當前TimerTask裡的任務[在類裡執行]
- scheduledExecutionTime(),返回最近發生此任務的時間 毫秒[在主方法裡執行
myTimerTask.scheduledExecutionTime()
]
import java.util.TimerTask;
public class MyTimerTask extends TimerTask{
private String name;
private int count = 0;
public MyTimerTask(String name){
this,name = name;
}
@Override
public void run(){
System.out.println("This thread is " + this,name);
count++;
if(count==3){
//□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
cancel();//取消當前任務執行!!!!!!!!!!!!!!!!
//□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
}
}
//set get
}
Timer的兩個函式
- cancel() 中止所有安排的任務
- purge() 移除佇列中已取消的任務,返回溢位的任務數