scheduledthreadpoolexecutor它用來處理延時任務或定時任務。
它接收schduledfuturetask型別的任務,是執行緒池排程任務的最小單位,有三 種提交任務的方式:
1. schedule
2. scheduledatfixedrate
3. scheduledwithfixeddelay
schduledfuturetask接收的引數(成員變數):
1. private long time:任務開始的時間
2. private final long sequencenumber;:任務的序號
3. private final long period:任務執行的時間間隔
它採用delayqueue儲存等待的任務
1. delayqueue內部封裝了乙個priorityqueue,它會根據time的先後時間排序,若 time相同則根據sequencenumber排序;
2. delayqueue也是乙個無界佇列;
工作執行緒的執行過程:
工作執行緒會從delayqueue取已經到期的任務去執行;
執行結束後重新設定任務的到期時間,再次放回delayqueue
scheduledthreadpoolexecutor會把待執行的任務放到工作佇列 delayqueue中,delayqueue封裝了乙個priorityqueue,priorityqueue會對 佇列中的scheduledfuturetask進行排序
看執行緒池的實現
看執行緒池的實現 threadpool workthread.run 其實執行緒池的原理就在這裡,用start 才會建立新執行緒,而呼叫run 並不會建立新執行緒.這裡task為什麼需要實現runnable呢?其實任何乙個物件的方法都可以.runnable只不過提供乙個well known介面而已....
執行緒池之定時器
如果你開發過win32應用程式,你應該知道設定定時器是它api中的一部分。在這種情況下,你必須建立乙個window來接收wm timer的訊息。我們所面臨的第乙個問題是,建立乙個window來接收訊息,但你卻無法控制台應用程式中應用。其二,基於訊息的執行有時不是很精確,並且如果你的應用程式要處理很多...
8 併發程式設計 定時任務 定時執行緒池
scheduledthreadpoolexecutor 用來處理延時任務或定時任務。它接收schduledfuturetask型別的任務,是執行緒池排程任務的最小單位,有三種提交任務的方式 schedule scheduledatfixedrate scheduledwithfixeddelay 它...