呀兒喲,看個定時執行緒池,盡然挖出這麼多寶藏 一

2022-08-13 01:18:18 字數 1029 閱讀 8194

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 它...