本來是每天週一到週五凌晨1點執行的任務,查看日誌發現在周日20點執行了,求解可能發生的原因,伺服器是單核心cpu.
補充:我的定時任務類別裡有AB兩個定時任務,A任務週一到週五1點執行(@Scheduled(cron = "0 0 1 ? MON-FRI")),B任務每天3點執行(@Scheduled(cron = " 0 0 3 ? *")),查看日誌發現在周一到週五時,先執行A任務而後執行了B任務,也就是B沒有等到3點就執行了;當在周六週日是時B任務才是3點執行的,而星期日20點A任務卻執行了。 。 。
我猜你並沒有指定定時任務的pool size,所以預設所有schedule的共用一個執行緒。需要指定schedule 的pool size大小
xml
bean
補充:
共用一個線程將帶來嚴重的問題。如果A任務沒有在2小時內執行完,那麼B任務的執行時間將會延遲,甚至不執行。