TimerTask定時任務
1. 介紹
java.util.TimerTask
是一個被Timer類執行的任務。繼承
Runnable
接口
2. 類變量
有下面四種狀态:
int state = VIRGIN;
static final int VIRGIN = 0;
static final int SCHEDULED = 1;
static final int EXECUTED = 2;
static final int CANCELLED = 3;
VIRGIN
:初始化狀态,任務還沒有被執行
SCHEDULED
:任務已經計劃執行(如果不是一個重複執行的任務,它就還沒有被執行過)
EXECUTED
:非重複性任務已經被執行了(或者正在執行),并且沒有被取消
CANCELLED
:任務已經被取消(調用TimerTask.cancel)
lock
:控制通路TimerTask内部的鎖
final Object lock = new Object();
nextExecutionTime
:下一次任務執行的時間,如果是重複性任務,會在每一個任務執行前更新
long nextExecutionTime;
period
:重複性任務的周期時間,一個正值表明是固定頻率
fixed-rate
執行,負值表明固定延遲
fixed-delay
執行,0表示非重複性任務。固定頻率與固定延遲差別會在Timer定時器中看着代碼講
long period = 0;
3.成員方法
構造方法:
protected TimerTask() {
}
run():timerTask需要執行的具體操作,需要重寫
public abstract void run();
cancel():取消任務,如果任務正在執行中,會執行完。
public boolean cancel() {
synchronized(lock) {
boolean result = (state == SCHEDULED);
state = CANCELLED;
return result;
}
}
scheduledExecutionTime():最近一次執行時間
public long scheduledExecutionTime() {
synchronized(lock) {
return (period < 0 ? nextExecutionTime + period
: nextExecutionTime - period);
}
}