Timer&&TimerTask類

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

回顧一下:定時排程

(1)Timer類的歸屬感:

          Timer類是一種執行緒設施,每一個Timer物件對應的是一個執行緒,因此計時器所執行的任務應該迅速完成,否則可能會延遲後續任務的執行,這些後續的任務就有可能堆在一起,等到該任務完成後才能快速連續執行。

(2)Timer類執行時的夥伴:

           TimerTask,TimerTask類用來實現由Timer安排的一次或者重複執行的某一個任務。

(3)Timer類作用:

            用來實現在某一個時間或者某一段時間後,安排某一個任務執行一次,或者定期重讀執行,該功能要與TimerTask配合使用。

No.

方法

型別

描述

1

public Timer()

構造

用來建立一個計時器並啟動該計時器

2

public void cancel()

普通

用來終止該計時器,並放棄所有已安排的任務,對當前正在執行的任務沒有影響

3

public int purge()

普通

將所有已經取消的任務移除,一般用來釋放記憶體空間

4

public void schedule(TimerTask task, Date time)

普通

安排一個任務在指定的時間執行,如果已經超過該時間,則立即執行

5

public void schedule(TimerTask task, Date firstTime, long period)

普通

安排一個任務在指定的時間執行,之後以固定的頻率(單位:毫秒)重複執行

6

public void schedule(TimerTask task,  long delay)

普通

安排一個任務在一段時間(單位:毫秒)後執行。

7

public void schedule(TimerTask task,

long delay,long period)

普通

安排一個任務在一段時間(單位:毫秒)後執行,之後以固定的頻率(單位:毫秒)重複執行

8

public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

普通

安排一個任務在指定的時間執行,之後以近似固定的頻率(單位:毫秒)重複執行

9

public void scheduleAtFixedRate(TimerTask task,

long delay,long period)

普通

安排一個任務在一段時間(單位:毫秒)後執行,之後以近似固定的頻率(單位:毫秒)重複執行

 (4) schedule()與scheduleAtFixedRate()方法的區別:

         兩者的區別在與重複執行任務時,對於時間間隔出現延遲的情況處理: schedule()方法的執行時間間隔永遠是固定的,如果之前出現了延遲的情況,之後也會繼續按照設定好的的間隔時間來執行, scheduleAtFixedRate()方法可以根據出現的延遲時間自動調整下一次間隔的執行時間。

 (5)要想執行具體的任務,則必須使用TimerTask類。TimerTask類是一個抽象類,如果要使用該類,需要自己建立一個類來繼承此類,並實現其中的抽象方法。

No.

方法

型別

描述

1

public void cancel()

普通

用來終止此任務,如果該任務只執行一次且還沒有執行,則永遠不會再執行,如果為重複執行任務,則之後不會再執行(如果任務正在執行,則執行完後不會再執行)。

2

public void run()

普通

該任務所要執行的具體操作,該方法為引入的介面Runnable中的方法,子類需要覆寫此方法。

3

public long scheduledExecutionTime()

普通

返回最近一次要執行該任務的時間(如果正在執行,則返回此任務的執行安排時間),一般在run()方法中呼叫,用來判斷當前是否有足夠的時間來執行完成該任務。

 


(adsbygoogle = window.adsbygoogle || []).push({});

function googleAdJSAtOnload() {
var element = document.createElement(“script”);
element.src = “//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js”;
element.async = true;
document.body.appendChild(element);
}
if (window.addEventListener) {
window.addEventListener(“load”, googleAdJSAtOnload, false);
} else if (window.attachEvent) {
window.attachEvent(“onload”, googleAdJSAtOnload);
} else {
window.onload = googleAdJSAtOnload;
}

程式語言 最新文章