java中timer的schedule和scheduleAtFixedRate方法區(qū)別詳解
timer的schedule和scheduleAtFixedRate方法一般情況下是沒什么區(qū)別的,只在某個情況出現(xiàn)時會有區(qū)別--當(dāng)前任務(wù)沒有來得及完成下次任務(wù)又交到手上。
我們來舉個例子:
暑假到了老師給schedule和scheduleAtFixedRate兩個同學(xué)布置作業(yè)。
老師要求學(xué)生暑假每天寫2頁,30天后完成作業(yè)。
這兩個學(xué)生每天按時完成作業(yè),直到第10天,出了意外,兩個學(xué)生出去旅游花了5天時間,這5天時間里兩個人都沒有做作業(yè)。任務(wù)被拖延了。
這時候兩個學(xué)生采取的策略就不同了:
schedule重新安排了任務(wù)時間,旅游回來的第一天做第11天的任務(wù),第二天做第12天的任務(wù),最后完成任務(wù)花了35天。
scheduleAtFixedRate是個守時的學(xué)生,她總想按時完成老師的任務(wù),于是在旅游回來的第一天把之前5天欠下的任務(wù)以及第16天當(dāng)天的任務(wù)全部完成了,之后還是按照老師的原安排完成作業(yè),最后完成任務(wù)花了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("當(dāng)前時間:"
+ sf.format(System.currentTimeMillis()) + "計劃時間:"
+ sf.format(scheduledExecutionTime()));
}
}, 1000, 1000);
}
}
希望能幫到大家!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中Hashtable類與HashMap類的區(qū)別詳解
Hashtable的應(yīng)用非常廣泛,HashMap是新框架中用來代替Hashtable的類,也就是說建議使用HashMap,不要使用Hashtable??赡苣阌X得Hashtable很好用,為什么不用呢?這里簡單分析他們的區(qū)別。2016-01-01
Java基礎(chǔ)之創(chuàng)建虛擬機對象的過程詳細(xì)總結(jié)
本文基于虛擬機HotSpot和常用的內(nèi)存區(qū)域Java堆深入對象分配、布局和訪問的全過程,文中有非常詳細(xì)的圖文解說,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法
有時候因為新增的需求需要獲取剛剛新增的數(shù)據(jù)的自增的主鍵ID,下面這篇文章主要給大家介紹了關(guān)于Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問題實例分析
這篇文章主要介紹了JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問題,結(jié)合實例形式分析了JAVA 多態(tài)操作中父類與子類轉(zhuǎn)換問題相關(guān)原理、操作技巧與注意事項,需要的朋友可以參考下2020-05-05

