Java Timer任務執行消耗事件大於執行週期問題驗證
阿新 • • 發佈:2018-12-23
其實是一個不值得一提的小問題,不過既然驗證了,就拿出來分享一下吧。
OneCoder在要做一個週期性的任務,Timer即可實現,不過考慮到有可能在一個週期內,任務可能沒有結束,不知道Timer的處理方式,是直接啟動下一個,還是等待完成,還是可配置的。於是OneCoder進行了一個簡單的驗證:/**
* @author lihzh
* @alia OneCoder
* @blog http://www.coderli.com
*/
public class TimerMain {
/**
* JDK Timer類測試類。主要測試在一個Timer週期內,執行緒未結束時,timer的處理情況。
*
* @param args
* @author lihzh
* @alia OneCoder
*/
public static void main(String[] args) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
try {
System.out.println(Thread.currentThread().getName());
Thread.sleep(1000 * 5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(timerTask, 0, 1000);
}
}
結論也很簡單,下一個任務會等待上一個任務執行完成再啟動。也算合理。