您好,登錄后才能下訂單哦!
timer的schedule和scheduleAtFixedRate方法一般情況下是沒什么區別的,只在某個情況出現時會有區別--當前任務沒有來得及完成下次任務又交到手上。
我們來舉個例子:
暑假到了老師給schedule和scheduleAtFixedRate兩個同學布置作業。
老師要求學生暑假每天寫2頁,30天后完成作業。
這兩個學生每天按時完成作業,直到第10天,出了意外,兩個學生出去旅游花了5天時間,這5天時間里兩個人都沒有做作業。任務被拖延了。
這時候兩個學生采取的策略就不同了:
schedule重新安排了任務時間,旅游回來的第一天做第11天的任務,第二天做第12天的任務,最后完成任務花了35天。
scheduleAtFixedRate是個守時的學生,她總想按時完成老師的任務,于是在旅游回來的第一天把之前5天欠下的任務以及第16天當天的任務全部完成了,之后還是按照老師的原安排完成作業,最后完成任務花了30天。
package day01; import java.text.SimpleDateFormat; import java.util.Timer; import java.util.TimerTask; public class Test01 { public static void main(String[] args) { final Timer timer = new Timer(); //timer.scheduleAtFixedRate(new TimerTask() { timer.schedule(new TimerTask() {//分別注釋這行和上面這行試一試效果 int count = 1; @Override public void run() { count++; if (count == 10) { try { Thread.sleep(5000); } catch (InterruptedException e) { System.out.println("延遲5s"); e.printStackTrace(); } } SimpleDateFormat sf = new SimpleDateFormat( "yyyy MM dd hh:mm:ss"); System.out.println("當前時間:" + sf.format(System.currentTimeMillis()) + "計劃時間:" + sf.format(scheduledExecutionTime())); } }, 1000, 1000); } }
希望能幫到大家!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。