8 併發程式設計 定時任務 定時執行緒池

2021-10-14 23:45:48 字數 1132 閱讀 5370

scheduledthreadpoolexecutor

用來處理延時任務或定時任務。

它接收schduledfuturetask型別的任務,是執行緒池排程任務的最小單位,有三種提交任務的方式:

schedule

scheduledatfixedrate

scheduledwithfixeddelay

它採用delayqueue儲存等待的任務

delayqueue內部封裝了乙個priorityqueue,它會根據time的先後時間排序,若time相同則根據sequencenumber排序;

delayqueue也是乙個無界佇列;

schduledfuturetask

schduledfuturetask接收的引數(成員變數):

1. private long time:任務開始的時間

2. private final long sequencenumber;:任務的序號

3. private final long period:任務執行的時間間隔

例項

scheduledexecutorservice pool = executors.newscheduledthreadpool(5)

;-- 延時1s

pool.schedule(new runnable(

)},1, timeunit.seconds)

; -- 延時1s、每隔3面執行 重複執行 (執行週期固定)

-- 不管任務執行多長時間,每過3秒中就會產生乙個新的任務

pool.scheduleatfixedrate(new runnable(

)},1,3, timeunit.seconds)

; -- 上一次任務執行的時間後 +3秒中就會產生乙個新的任務

pool.schedulewithfixeddelay(new runnable(

)},1,3,timeunit.seconds)

;

定時任務 內部類 執行緒池

需求 把每天的資料定時推送到第三方,資料量有點大,如果乙個個推送資料,需要耗時非常久,所以採取執行緒池 內部類操作。1.首先先了解一下定時任務cron的寫法。cron表示式是乙個字串,字串以5或6個空格隔開,分為6或7個域。cron從左到右 用空格隔開 秒 分 小時 月份中的日期 月份 星期中的日期...

spring boot 多執行緒併發定時任務

剛剛看了下spring boot實現定時任務的文章,感覺還不錯。spring boot 使用spring自帶的schedule來實現定時任務變得非常簡單和方便。在這裡個大家分享下。enablescheduling 開啟定時任務 public static void main string args ...

Java定時執行緒池停止超時任務

題主最近遇到乙個問題,本來通過scheduledexecutorservice執行緒池定時排程乙個任務。奈何不知道為啥跑了2個多月,其中乙個任務hang住了,原本定時的任務則出現了問題。關於定時執行緒池,好多人認為設定好頻率 比如1min 它會按照這個間隔按部就班的工作。但是,如果其中一次排程任務卡...