spring定時器定時任務(wù)到時間未執(zhí)行問題的解決
spring定時器定時任務(wù)到時間未執(zhí)行
應(yīng)用場景
一個定時器類中有n個定時任務(wù),有每30秒執(zhí)行一次的還有每1分鐘執(zhí)行一次的,出現(xiàn)問題的定時任務(wù)是0點整時執(zhí)行的定時任務(wù)到了0點沒有執(zhí)行。
原因分析
spring定時器任務(wù)scheduled-tasks默認(rèn)配置是單線程串行執(zhí)行的,當(dāng)某個定時任務(wù)出現(xiàn)阻塞,或者執(zhí)行時間過長,則線程就會被占用,其他定時任務(wù)排隊執(zhí)行,導(dǎo)致后面的定時任務(wù)未能準(zhǔn)時執(zhí)行。
解決方式
開啟多線程定時任務(wù)執(zhí)行
/** * 多線程執(zhí)行定時任務(wù) */ @Configurable public class ScheduleConfig implements SchedulingConfigurer { private static final int FIVE = 5; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.setScheduler(Executors.newScheduledThreadPool(FIVE)); } }
解決修改系統(tǒng)時間后Spring 定時任務(wù)不執(zhí)行
問題描述
Spring 定時任務(wù)不執(zhí)行
事情起因是這樣的,我們有一個spring定時任務(wù),每隔半小時要執(zhí)行一次。
起因
由于種種原因,昨晚上這臺服務(wù)器被關(guān)機了,今早【重啟服務(wù)器】和【啟動定時任務(wù)服務(wù)】。
機器重啟后,發(fā)現(xiàn)服務(wù)器機器系統(tǒng)時間和實際北京時間不一致,相差10個小時。
于是乎,我使用date -s 10:35:35 設(shè)置和北京時間保持一致。
錯誤
本以為這樣,時間已經(jīng)一致了,定時任務(wù)應(yīng)該能正常執(zhí)行了!
等了好幾個小時,定時任務(wù)依然沒有執(zhí)行。
于是查看系統(tǒng)日志,系統(tǒng)日志一切正常,只是沒有定時任務(wù)執(zhí)行的log日志。
解決問題
奇了個怪,服務(wù)正常啟動,但定時任務(wù)沒有執(zhí)行。
然而昨天還在跑的服務(wù),就因為一次關(guān)機,就over了?
不可能,于是關(guān)掉應(yīng)用服務(wù)再次重啟。
定時任務(wù)執(zhí)行成功了,于是得出結(jié)論: 服務(wù)器系統(tǒng)時間改變后,Spring 定時任務(wù)將失效。
服務(wù)器系統(tǒng)時間改變后,Spring 定時任務(wù)將失效,解決方法就是:重啟應(yīng)用服務(wù)。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot ApplicationRunner的使用解讀
這篇文章主要介紹了Springboot ApplicationRunner的使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05springcloud如何獲取網(wǎng)關(guān)封裝的頭部信息
這篇文章主要介紹了springcloud獲取網(wǎng)關(guān)封裝的頭部信息,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06springmvc使用REST出現(xiàn):Request?method?'PUT'?not?sup
這篇文章主要介紹了springmvc使用REST出現(xiàn):Request?method?'PUT'?not?supported問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02SpringBoot實現(xiàn)多數(shù)據(jù)源的實戰(zhàn)案例
這篇文章主要介紹了SpringBoot實現(xiàn)多數(shù)據(jù)源的實戰(zhàn)案例,文中通過示例代碼和圖文展示介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2024-01-01