①定時任務中只有乙個執行緒和乙個任務佇列(該佇列是乙個優先順序佇列,基於最小堆實現,時間距現在最近的任務排在開頭)
②任務的執行是根據當前時間進行判斷是否執行,如果任務的執行時間大於當前時間就在佇列上等待,否則更新任務的下次時間給任務,然後進行任務的執行
③只要執行緒啟動後,就會在乙個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類 例...