task-所要安排的任務time-首次執行任務的時間period-執行一次task的時間間隔,單位毫秒
作用:時間等於或超過time首次執行task,之後每隔period毫秒重複執行task
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Timer; import java.util.TimerTask; public class MyTimerTask extends TimerTask { @Override public void run() { Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间 System.out.println("NO.1"); } public static void main(String[] args) { MyTimerTask task = new MyTimerTask(); Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); System.out.println(format.format(calendar.getTime())); calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间 Timer timer = new Timer(); timer.scheduleAtFixedRate(task,calendar.getTime(),2000); } }
task-所要執行的任務delay-執行任務的延遲時間,單位毫秒period-執行一次task的時間間隔
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Timer; import java.util.TimerTask; public class MyTimerTask extends TimerTask { @Override public void run() { Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); System.out.println("Current Time:"+format.format(calendar.getTime()));//获取当前系统时间 System.out.println("NO.1"); } public static void main(String[] args) { MyTimerTask task = new MyTimerTask(); Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); System.out.println(format.format(calendar.getTime())); calendar.add(Calendar.SECOND,3);//获取距离当前时间3秒后的时间 Timer timer = new Timer(); //timer.scheduleAtFixedRate(task,calendar.getTime(),2000); timer.scheduleAtFixedRate(task,1000,2000); } }
1)scheduleAtFixedRate:可以傳入runnable,定制第一次的初始化執行時間,週期時間,初始化執行時間,週期時間,可以傳入runnable,定制第一次的初始化執行時間,週期時間,初始化執行時間,週期時間,單位時間-------創建並執行一個週期性任務,過了給定的初始延遲時間(1min執行一次or其他時間),會第一次被執行。執行過程中發生異常,任務停止。
2)scheduleWithFixedDelay:和上一種相類似-----創建並執行週期性任務,第一次執行及異常情況
A:1s中執行一個任務,每個任務執行時間500ms====兩種無區別
B:執行任務時間過長,如間隔時間是1s,而執行時間3s====該情況下有區別,主要在周期時間的差異
scheduleWithFixedDelay該方法中一次任務執行時長超過週期時間,下一次任務會在該次任務執行結束時間基礎上,計算執行延時(舉例子:如間隔時間是1s,而執行時間3s,當前10:03時觸發執行,理論而言,10:04時應執行新任務,但透過該方法執行,執行結束時為10:06,在10:06的基礎上延遲1s執行新任務)
scheduleAtFixedRate此方法(舉例:如間隔時間是1s,而執行時間3s,當前10:03時觸發執行,10:06執行結束,10:04及10:05累積的任務會立刻執行,而非在10:06的基礎上增加延時時間)
以上是Java中的scheduleAtFixedRate怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!