1. 程式人生 > >util包下Timer類的延遲執行

util包下Timer類的延遲執行

schedule 再次 由於 調用次數 原來 一次 nbsp 調用 png

Timer類是用來做定時器的關鍵類,其實質是在線程中定時調用任務方法的實現。

timer.schedule(TimerTask,int,int)實現的是循環調用任務方法,在TimerTask中就是一個線程的run()方法,需要自己重寫,第二個參數是從多少毫秒開始執行run(),第三個參數是執行完run()後多少毫秒再次執行。

技術分享圖片

timer.schedule(TimerTask,int)實現的是單次定時調用任務方法,在TimerTask中就是一個線程的run()方法,需要自己重寫,第二個參數是從多少毫秒後開始執行run()。

技術分享圖片

timer.scheduleAtFixedRate(TimerTask,int,int)實現的是循環調用任務方法,在TimerTask中就是一個線程的run()方法,需要自己重寫,第二個參數是從多少毫秒開始執行run(),第三個參數是執行完run()後多少毫秒再次執行。與上面timer.schedule(TimerTask,int,int)功能上相似,實質上前者的執行時間是當前應該通過的時間,而後者的執行時間是當前實際通過的時間。例如:規定每隔5秒調用一次任務,當調用到5次的時候,分別在5,10,15,20,25秒的時候調用任務,但是由於某種原因在5秒的時候程序沒有調用而在7秒的時候調用,這樣算來下一次的調用時間是12秒,不是原來的第10秒,當第25秒的時候才只調用了4次任務方法,而理論上應該調用5次。也就是說當執行任務超點或者早點的時候,前者能夠靈活調用任務使得在規定計算出的時間內達到規定的調用次數,而後者只能按照超點或早點的時間計算,這樣後者就可能會少調用或多調用任務次數。

util包下Timer類的延遲執行