更新時間:2020-03-28 13:28:52 來源:動力節點 瀏覽2376次
1.對象創建及方法調用
Timertimer=newTimer(); timer.schedule(newTimerTask(){ @Override publicvoidrun(){ //任務執行代碼 } },runDate);
2.任務執行時間與代碼調用時間的關系
任務執行時間在代碼調用時間之前:以代碼調用時間為準
任務執行時間在代碼調用時間之后:以任務執行時間為準
當Timer對象執行多個任務(TimerTask對象)時,代碼調用時間不一定與任務的執行時間相同,因為某個任務的執行時間可能會延遲。
注:一個Timer對象中的多個TimerTask是以隊列的方式一個一個被順序執行的。
3.任務執行時間與循環間隔時間的關系
當任務執行的時間大于計劃的時間間隔時,實際間隔時間為任務執行的時間。
4.schedule與scheduleAtFixedRate的區別
如果任務的起始執行時間在調用時間之后,則schedule與scheduleAtFixedRate在運行效果上沒有區別,它們的區別在于追趕性(場景為任務的起始時間在調用時間之前,下同)。
將兩個時間段內的時間所對應的任務被“補充性”地執行,這就是Task任務的追趕特性。
schedule不具有追趕性,即以代碼的執行時間作為任務的起始時間,并按指定的間隔時間進行任務循環執行;而scheduleAtFixedRate具有追趕性,當代碼執行時,會補充兩個時間段內“欠缺”的任務執行次數,執行完之后再以指定的間隔時間進行任務循環執行。
5.方法cancel()的作用
TimerTask對象的cancel()方法的作用是將自身從任務隊列中進行清除,其他任務不受影響。
Timer對象的cancel()方法的作用是將任務隊列中的所有任務進行清除。
當Timer對象中只有一個任務隊列時,任務執行完后,Timer對象也不會銷毀,一直處于等待的狀態,除非調用cancel()方法。
以上就是動力節點java培訓機構的小編針對“Java基礎學習:java定時器線程”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習