日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間: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ò)推廣、移動(dòng)互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十多年以來,已經(jīng)為上千多家成都服務(wù)器租用各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的上千多家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。

java.lang.Object

|---java.util.Timer

public class Timer
extends Object

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

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

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

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

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

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

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

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

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

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

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

方法總結(jié)

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

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

Timer

public Timer()

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

Timer

public Timer(boolean isDaemon)

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

參數(shù):

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

Timer

public Timer(String name)

創(chuàng)建一個(gè)新的計(jì)時(shí)器,其關(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)建一個(gè)新的計(jì)時(shí)器,其關(guān)聯(lián)線程具有指定的名稱,并且可以指定給 Thread#setDaemon。

參數(shù):

參數(shù)名稱 參數(shù)描述
name關(guān)聯(lián)線程的名稱
isDaemon如果關(guān)聯(lián)的線程應(yīng)該作為守護(hù)進(jìn)程運(yùn)行,則為 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如果延遲為負(fù),或延遲 + System.currentTimeMillis() 為負(fù)。
IllegalStateException如果任務(wù)已被安排或取消,定時(shí)器被取消,或定時(shí)器線程終止。
NullPointerException如果任務(wù)為空

schedule

public void schedule(TimerTask task, Date time)

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

參數(shù):

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

Throws:

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

schedule

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

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

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

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

參數(shù):

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

Throws:

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

schedule

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

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

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

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

參數(shù):

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

Throws:

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

scheduleAtFixedRate

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

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

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

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

參數(shù):

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

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)

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

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

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

參數(shù):

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

Throws:

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

cancel

public void cancel()

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

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

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

purge

public int purge()

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

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

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

返回:

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


網(wǎng)站名稱:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OSTimer
本文網(wǎng)址:http://www.5511xx.com/article/cossepo.html