想象一下我希望我的代碼在我的應用程序的某個特定時間執行或在當前時間稍後的某個時間執行的場景。換句話說,我想在特定的時間安排我的任務。
Java Timer class(java.util.Timer)允許應用程序在單獨的後臺線程上調度任務。
這是最簡單的example of Java Timer:
import java.util.Timer;
import java.util.TimerTask;
public class JavaTimer {
public static void main(String[] args){
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Inside Timer Task" + System.currentTimeMillis());
}
};
System.out.println("Current time" + System.currentTimeMillis());
timer.schedule(task, 10000,1000);
System.out.println("Current time" + System.currentTimeMillis());
}
}
Output:
Current time1455469505220
Current time1455469505221
Inside Timer Task1455469515222
Inside Timer Task1455469516222
Inside Timer Task1455469517222
Inside Timer Task1455469518222
Inside Timer Task1455469519222
Inside Timer Task1455469520222
Inside Timer Task1455469521222
Inside Timer Task1455469522222
Inside Timer Task1455469523222
Inside Timer Task1455469524222
Inside Timer Task1455469525222
Inside Timer Task1455469526222
Inside Timer Task1455469527222
Inside Timer Task1455469528223
Inside Timer Task1455469529223 and it goes on
分析: 到timer.schedule調用(任務,10000,1000)將要安排的任務,是要執行第一次(在另一個線程上)在這次通話10秒後。之後,它會在延遲10秒後再次呼叫。這裏要提到的是,如果任務在10秒後不能啓動,下一個任務將不會啓動。所以這裏兩個連續任務之間的延遲時間是固定的。
來源:Java Timer Example
不要這樣做與定時器。使用java.util.concurrent中的某些東西。它更容易理解,性能更強,更健壯。 SimonC下面的例子是一個體面的做法。 – kittylyst 2012-02-23 14:00:31