首先創建一個任務執行類,繼承TimerTask:MyTimerTask,重寫run方法在run
裏面執行自己額業務邏輯
import java.util.TimerTask;
public class MyTimerTask extends TimerTask{
private String name;
public MyTimerTask(String inputName){
name = inputName;
}
@Override
public void run() {
// TODO Auto-generated method stub
// 打印當前name的內容
System.out.println("current exec name is "+name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然後創建一個Timer定時器:MyTimer
import java.util.Timer;
public class MyTimer {
public static void main(String []args){
// 創建一個Timer實例
Timer timer = new Timer();
// 創建一個MyTimerTask實例
MyTimerTask myTimerTask = new MyTimerTask("NO.1");
// 通過timer 定時頂頻率調用myTimerTask的業務
// 即第一次執行是在當前時間的兩秒鐘之後,之後就每隔一秒執行一次
timer.schedule(myTimerTask, 2000L, 1000L);
}
}
定時器解綁就是調用Timer的幾個是列方法:
timer.schedule(task, time);---時間等於或者晚於這個時間的時候執行task,並且只執行一次。
timer.schedule(task, delay);---延遲delay毫秒數之後執行task
timer.schedule(task, delay, period);---延遲delay毫秒後執行第一次,以後則每隔period毫秒執行一次task
timer.schedule(task, firstTime, period);--第一次執行是在firstTime,以後會每隔period毫秒的時間段執行一次
timer.scheduleAtFixedRate(task, delay, period);---看參數能想到
timer.scheduleAtFixedRate(task, firstTime, period);---看參數能想到用法
scheduleAtFixedRate
可以用過去的時間爲參數:如當前時間11:17,定時開始時間是11:10,每隔3分鐘執行一次,則程序會立即執行三次(11:10,11:13,11:16),而下次執行時間是11:19。
如果使用schedule方法則是會立即執行一次,並且下次執行時間是在11:20.schedule方法不會去計算過去的時間。