日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSTimer

Timer

創(chuàng)新互聯(lián)建站是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、微信小程序、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十多年以來,已經(jīng)為上千多家成都服務(wù)器租用各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的上千多家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。

java.lang.Object

|---java.util.Timer

public class Timer
extends Object

線程調(diào)度任務(wù)以供將來在后臺線程中執(zhí)行的工具。 任務(wù)可以安排為一次性執(zhí)行,或定期重復(fù)執(zhí)行。

對應(yīng)于每個 Timer 對象的是單個后臺線程,用于按順序執(zhí)行所有計時器的任務(wù)。 定時器任務(wù)應(yīng)該很快完成。 如果一個定時器任務(wù)花費了過多的時間來完成,它就會“占用”定時器的任務(wù)執(zhí)行線程。 反過來,這可以延遲后續(xù)任務(wù)的執(zhí)行,這些任務(wù)可能會在(如果)有問題的任務(wù)最終完成時“聚集”并快速連續(xù)執(zhí)行。

在對 Timer 對象的最后一個實時引用消失并且所有未完成的任務(wù)都已完成執(zhí)行后,計時器的任務(wù)執(zhí)行線程優(yōu)雅地終止(并成為垃圾回收的對象)。 但是,這可能需要任意長的時間才能發(fā)生。 默認情況下,任務(wù)執(zhí)行線程不作為守護線程運行,因此它能夠防止應(yīng)用程序終止。 如果調(diào)用者想要快速終止定時器的任務(wù)執(zhí)行線程,調(diào)用者應(yīng)該調(diào)用定時器的取消方法。

如果計時器的任務(wù)執(zhí)行線程意外終止,例如,因為調(diào)用了它的 stop 方法,那么任何進一步嘗試在計時器上安排任務(wù)都將導(dǎo)致 IllegalStateException,就像調(diào)用了計時器的取消方法一樣。

這個類是線程安全的:多個線程可以共享一個 Timer 對象而不需要外部同步。

此類不提供實時保證:它使用 Object.wait(long) 方法安排任務(wù)。

Java 5.0 引入了 java.util.concurrent 包,其中的并發(fā)實用程序之一是 ScheduledThreadPoolExecutor,它是一個線程池,用于以給定的速率或延遲重復(fù)執(zhí)行任務(wù)。 它實際上是 Timer/TimerTask 組合的更通用替代品,因為它允許多個服務(wù)線程,接受各種時間單位,并且不需要子類化 TimerTask(只需實現(xiàn) Runnable)。 使用一個線程配置 ScheduledThreadPoolExecutor 使其等效于 Timer。

實施說明:此類可擴展到大量并發(fā)計劃任務(wù)(數(shù)千個應(yīng)該沒有問題)。 在內(nèi)部,它使用二進制堆來表示其任務(wù)隊列,因此調(diào)度任務(wù)的成本為 O(log n),其中 n 是并發(fā)調(diào)度的任務(wù)數(shù)。

實現(xiàn)說明:所有構(gòu)造函數(shù)都啟動一個計時器線程。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
Timer()創(chuàng)建一個新的計時器。
Timer(boolean isDaemon)創(chuàng)建一個新的計時器,其關(guān)聯(lián)線程可以指定給 Thread#setDaemon。
Timer(String name)創(chuàng)建一個新的計時器,其關(guān)聯(lián)線程具有指定的名稱。
Timer(String name, boolean isDaemon)創(chuàng)建一個新的計時器,其關(guān)聯(lián)線程具有指定的名稱,并且可以指定給 Thread#setDaemon。

方法總結(jié)

修飾符和類型 方法 描述
voidcancel()終止此計時器,丟棄任何當(dāng)前計劃的任務(wù)。
intpurge()從此計時器的任務(wù)隊列中刪除所有已取消的任務(wù)。
voidschedule(TimerTask task, long delay)安排指定任務(wù)在指定延遲后執(zhí)行。
voidschedule(TimerTask task, long delay, long period)安排指定任務(wù)以重復(fù)固定延遲執(zhí)行,在指定延遲后開始。
voidschedule(TimerTask task, Date time)安排指定任務(wù)在指定時間執(zhí)行。
voidschedule(TimerTask task, Date firstTime, long period)從指定時間開始,安排指定任務(wù)以重復(fù)固定延遲執(zhí)行。
voidscheduleAtFixedRate(TimerTask task, long delay, long period)安排指定任務(wù)以重復(fù)固定速率執(zhí)行,在指定延遲后開始。
voidscheduleAtFixedRate(TimerTask task, Date firstTime, long period)從指定時間開始,安排指定任務(wù)以重復(fù)固定速率執(zhí)行。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細信息

Timer

public Timer()

創(chuàng)建一個新的計時器。 關(guān)聯(lián)的線程沒有 Thread#setDaemon。

Timer

public Timer(boolean isDaemon)

創(chuàng)建一個新的計時器,其關(guān)聯(lián)線程可以指定給 Thread#setDaemon。 如果計時器將用于安排重復(fù)的“維護活動”,則調(diào)用守護線程,只要應(yīng)用程序正在運行,就必須執(zhí)行該活動,但不應(yīng)延長應(yīng)用程序的生命周期。

參數(shù):

參數(shù)名稱 參數(shù)描述
isDaemon如果關(guān)聯(lián)的線程應(yīng)該作為守護進程運行,則為 true。

Timer

public Timer(String name)

創(chuàng)建一個新的計時器,其關(guān)聯(lián)線程具有指定的名稱。 關(guān)聯(lián)的線程沒有 Thread#setDaemon。

參數(shù):

參數(shù)名稱 參數(shù)描述
name關(guān)聯(lián)線程的名稱

Throws:

Throw名稱 Throw描述
NullPointerException如果 name 為空

Timer

public Timer(String name, boolean isDaemon)

創(chuàng)建一個新的計時器,其關(guān)聯(lián)線程具有指定的名稱,并且可以指定給 Thread#setDaemon。

參數(shù):

參數(shù)名稱 參數(shù)描述
name關(guān)聯(lián)線程的名稱
isDaemon如果關(guān)聯(lián)的線程應(yīng)該作為守護進程運行,則為 true

Throws:

Throw名稱 Throw描述
NullPointerException如果 name 為空

方法詳情

schedule

public void schedule(TimerTask task, long delay)

安排指定任務(wù)在指定延遲后執(zhí)行。

參數(shù):

參數(shù)名稱 參數(shù)描述
task要安排的任務(wù)。
delay任務(wù)執(zhí)行前的延遲毫秒數(shù)。

Throws:

Throw名稱 Throw描述
IllegalArgumentException如果延遲為負,或延遲 + System.currentTimeMillis() 為負。
IllegalStateException如果任務(wù)已被安排或取消,定時器被取消,或定時器線程終止。
NullPointerException如果任務(wù)為空

schedule

public void schedule(TimerTask task, Date time)

安排指定任務(wù)在指定時間執(zhí)行。 如果時間是過去,則安排任務(wù)立即執(zhí)行。

參數(shù):

參數(shù)名稱 參數(shù)描述
task要安排的任務(wù)。
time執(zhí)行任務(wù)的時間。

Throws:

Throw名稱 Throw描述
IllegalArgumentException如果 time.getTime() 是負數(shù)。
IllegalStateException如果任務(wù)已被安排或取消,定時器被取消,或定時器線程終止。
NullPointerException如果任務(wù)或時間為空

schedule

public void schedule(TimerTask task, long delay, long period)

安排指定任務(wù)以重復(fù)固定延遲執(zhí)行,在指定延遲后開始。 隨后的執(zhí)行以大約固定的時間間隔進行,間隔指定的時間段。

在固定延遲執(zhí)行中,每次執(zhí)行都是相對于前一次執(zhí)行的實際執(zhí)行時間安排的。 如果由于任何原因(例如垃圾收集或其他后臺活動)延遲執(zhí)行,則后續(xù)執(zhí)行也會延遲。 從長遠來看,執(zhí)行頻率一般會略低于指定周期的倒數(shù)(假設(shè)系統(tǒng)時鐘底層 Object.wait(long) 是準確的)。

固定延遲執(zhí)行適用于需要“順利”的重復(fù)活動。 換句話說,它適用于在短期內(nèi)保持頻率準確比在長期內(nèi)更重要的活動。 這包括大多數(shù)動畫任務(wù),例如定期閃爍光標。 它還包括響應(yīng)人工輸入執(zhí)行常規(guī)活動的任務(wù),例如只要按住一個鍵就自動重復(fù)一個字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
task要安排的任務(wù)。
delay任務(wù)執(zhí)行前的延遲毫秒數(shù)。
period連續(xù)任務(wù)執(zhí)行之間的時間(以毫秒為單位)。

Throws:

Throw名稱 Throw描述
IllegalArgumentException如果延遲 < 0,或延遲 + System.currentTimeMillis() < 0,或周期 <= 0
IllegalStateException如果任務(wù)已被安排或取消,定時器被取消,或定時器線程終止。
NullPointerException如果任務(wù)為空

schedule

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

從指定時間開始,安排指定任務(wù)以重復(fù)固定延遲執(zhí)行。 隨后的執(zhí)行以大約固定的時間間隔進行,間隔指定的時間段。

在固定延遲執(zhí)行中,每次執(zhí)行都是相對于前一次執(zhí)行的實際執(zhí)行時間安排的。 如果由于任何原因(例如垃圾收集或其他后臺活動)延遲執(zhí)行,則后續(xù)執(zhí)行也會延遲。 從長遠來看,執(zhí)行頻率一般會略低于指定周期的倒數(shù)(假設(shè)系統(tǒng)時鐘底層 Object.wait(long) 是準確的)。 作為上述的結(jié)果,如果預(yù)定的第一次是過去的,則預(yù)定立即執(zhí)行。

固定延遲執(zhí)行適用于需要“順利”的重復(fù)活動。 換句話說,它適用于在短期內(nèi)保持頻率準確比在長期內(nèi)更重要的活動。 這包括大多數(shù)動畫任務(wù),例如定期閃爍光標。 它還包括響應(yīng)人工輸入執(zhí)行常規(guī)活動的任務(wù),例如只要按住一個鍵就自動重復(fù)一個字符。

參數(shù):

參數(shù)名稱 參數(shù)描述
task要安排的任務(wù)。
firstTime第一次執(zhí)行哪個任務(wù)。
period連續(xù)任務(wù)執(zhí)行之間的時間(以毫秒為單位)。

Throws:

Throw名稱 Throw描述
IllegalArgumentException如果 firstTime.getTime() < 0,或 period <= 0
IllegalStateException如果任務(wù)已被安排或取消,定時器被取消,或定時器線程終止。
NullPointerException如果 task 或 firstTime 為 null

scheduleAtFixedRate

public void scheduleAtFixedRate(TimerTask task, long delay, long period)

安排指定任務(wù)以重復(fù)固定速率執(zhí)行,在指定延遲后開始。 隨后的執(zhí)行以大約固定的時間間隔進行,間隔指定的時間段。

在固定速率執(zhí)行中,每次執(zhí)行都是相對于初始執(zhí)行的計劃執(zhí)行時間安排的。 如果由于任何原因(例如垃圾收集或其他后臺活動)延遲了執(zhí)行,則會快速連續(xù)發(fā)生兩次或更多執(zhí)行以“趕上”。 從長遠來看,執(zhí)行頻率將恰好是指定周期的倒數(shù)(假設(shè) Object.wait(long) 底層的系統(tǒng)時鐘是準確的)。

固定速率執(zhí)行適用于對絕對時間敏感的重復(fù)活動,例如每小時整點響鈴,或每天在特定時間運行定期維護。 它也適用于執(zhí)行固定執(zhí)行次數(shù)的總時間很重要的重復(fù)活動,例如每秒滴答一次、持續(xù) 10 秒的倒計時計時器。 最后,固定速率執(zhí)行適用于調(diào)度多個必須彼此保持同步的重復(fù)計時器任務(wù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
task要安排的任務(wù)。
delay任務(wù)執(zhí)行前的延遲毫秒數(shù)。
period連續(xù)任務(wù)執(zhí)行之間的時間(以毫秒為單位)。

Throws:

Throw名稱 Throw描述
IllegalArgumentException如果延遲 < 0,或延遲 + System.currentTimeMillis() < 0,或周期 <= 0
IllegalStateExceptionif task was already scheduled or cancelled, timer was cancelled, or timer thread terminated.
NullPointerExceptionif task is null

scheduleAtFixedRate

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

從指定時間開始,安排指定任務(wù)以重復(fù)固定速率執(zhí)行。 隨后的執(zhí)行以大約固定的時間間隔進行,間隔指定的時間段。

在固定速率執(zhí)行中,每次執(zhí)行都是相對于初始執(zhí)行的計劃執(zhí)行時間安排的。 如果由于任何原因(例如垃圾收集或其他后臺活動)延遲了執(zhí)行,則會快速連續(xù)發(fā)生兩次或更多執(zhí)行以“趕上”。 從長遠來看,執(zhí)行頻率將恰好是指定周期的倒數(shù)(假設(shè) Object.wait(long) 底層的系統(tǒng)時鐘是準確的)。 由于上述原因,如果計劃的第一次是在過去,那么任何“錯過”的執(zhí)行都將被安排立即“趕上”執(zhí)行。

固定速率執(zhí)行適用于對絕對時間敏感的重復(fù)活動,例如每小時整點響鈴,或每天在特定時間運行定期維護。 它也適用于執(zhí)行固定執(zhí)行次數(shù)的總時間很重要的重復(fù)活動,例如每秒滴答一次、持續(xù) 10 秒的倒計時計時器。 最后,固定速率執(zhí)行適用于調(diào)度多個必須彼此保持同步的重復(fù)計時器任務(wù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
task要安排的任務(wù)。
firstTime第一次執(zhí)行哪個任務(wù)。
period連續(xù)任務(wù)執(zhí)行之間的時間(以毫秒為單位)。

Throws:

Throw名稱 Throw描述
IllegalArgumentException如果 firstTime.getTime() < 0 或 period <= 0
IllegalStateException如果任務(wù)已被安排或取消,定時器被取消,或定時器線程終止。
NullPointerException如果 task 或 firstTime 為 null

cancel

public void cancel()

終止此計時器,丟棄任何當(dāng)前計劃的任務(wù)。 不干擾當(dāng)前正在執(zhí)行的任務(wù)(如果存在)。 一旦定時器被終止,它的執(zhí)行線程就會優(yōu)雅地終止,并且不能在其上安排更多的任務(wù)。

請注意,從由此計時器調(diào)用的計時器任務(wù)的 run 方法中調(diào)用此方法絕對保證正在進行的任務(wù)執(zhí)行是此計時器將執(zhí)行的最后一個任務(wù)執(zhí)行。

該方法可能會被重復(fù)調(diào)用; 第二次和后續(xù)調(diào)用無效。

purge

public int purge()

從此計時器的任務(wù)隊列中刪除所有已取消的任務(wù)。 調(diào)用此方法對計時器的行為沒有影響,但會從隊列中消除對已取消任務(wù)的引用。 如果沒有對這些任務(wù)的外部引用,它們就有資格進行垃圾回收。

大多數(shù)程序不需要調(diào)用這個方法。 它專為取消大量任務(wù)的罕見應(yīng)用程序而設(shè)計。 調(diào)用此方法是以時間換空間:該方法的運行時間可能與 n + c log n 成正比,其中 n 是隊列中的任務(wù)數(shù),c 是取消的任務(wù)數(shù)。

請注意,允許在此計時器上安排的任務(wù)中調(diào)用此方法。

返回:

從隊列中刪除的任務(wù)數(shù)。


本文標題:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSTimer
標題網(wǎng)址:http://www.dlmjj.cn/article/cossepo.html