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 它會按照這個間隔按部就班的工作。但是,如果其中一次排程任務卡...