jdk中的Timer類理解和學習

2021-09-25 14:39:46 字數 763 閱讀 2775

①定時任務中只有乙個執行緒和乙個任務佇列(該佇列是乙個優先順序佇列,基於最小堆實現,時間距現在最近的任務排在開頭)

②任務的執行是根據當前時間進行判斷是否執行,如果任務的執行時間大於當前時間就在佇列上等待,否則更新任務的下次時間給任務,然後進行任務的執行

③只要執行緒啟動後,就會在乙個while迴圈中不斷的執行任務

注意:下面只是timer中的run方法的**

public void run() finally }}

private void mainloop()

//獲取當前時間和下次任務執行時間

currenttime = system.currenttimemillis();

executiontime = task.nextexecutiontime;

//判斷任務執行時間是否小於當前時間,表示小於,就說明可以執行了

if (taskfired = (executiontime<=currenttime)) else }}

//如果任務的執行時間還沒到,就計算出還有多久才到達執行時間,然後執行緒進入休眠

if (!taskfired) 

queue.wait(executiontime - currenttime);

}//如果任務的執行時間到了,就執行這個任務

if (taskfired)

task.run();

} catch(interruptedexception e) }}

timer和其schedule的理解

timer mtimer new timer isdaemon isdaemon true指的是定時器的執行緒是守護執行緒 false指的是定時器的執行緒不是守護執行緒 mtimer.schedule timertask task,long delay 在延時delay毫秒後執行task。mtime...

C 中timer類的用法

c 中timer類的用法 關於c 中timer類 在c 裡關於定時器類就有3個 1.定義在system.windows.forms裡 2.定義在system.threading.timer類裡 3.定義在system.timers.timer類裡 例 使用system.timers.timer類 例...

C 中timer類的用法

c 中timer類的用法 關於c 中timer類 在c 裡關於定時器類就有3個 1.定義在system.windows.forms裡 2.定義在system.threading.timer類裡 3.定義在system.timers.timer類裡 例 使用system.timers.timer類 例...