現(xiàn)在有個定時任務在項目里面,是每天凌晨執(zhí)行一次,但是有一天數(shù)據(jù)量特別大,任務跑了一天還沒跑完,一直執(zhí)行到了第二天,然后這個任務又開始執(zhí)行了。所以造成了數(shù)據(jù)的重復相關代碼 /***
* 每天凌晨一點sqlserver數(shù)據(jù)庫抓取數(shù)據(jù)
* @throws Exception 系統(tǒng)異常
*/
@Scheduled(cron = "0 0 1 * * ?") public void switchDate(){}這么寫的,現(xiàn)在我想讓任務執(zhí)行的時候看上一次同一任務執(zhí)行完沒,如果沒有執(zhí)行完就推遲任務執(zhí)行時間。我查過資料就是類似 Quartz 的 concurrent 屬性,是這么說的:其中 concurrent 屬性標識的解釋為:對于相同的 JobDetail ,當指定多個 Trigger 時, 很可能第一個job 完成之前,第二個 job 就開始了。指定 concurrent 設為 false,多個 job 不會并發(fā)運行,第二個job 將不會在第一個 job 完成之前開始。那么此處的第二個 job 到底是被推遲執(zhí)行了,還是被取消了呢? 今天帶著這個疑問做了一個小實驗,具體做法如下:將任務的 Trigger 設置為每 10 秒鐘執(zhí)行一次,然后在執(zhí)行的任務體內(nèi)讓 Thread 暫停 15 秒鐘,這樣不同的 job 之間肯定會有時間上的重疊。當啟動程序之后,發(fā)現(xiàn)前一個 job 執(zhí)行結(jié)束的時刻的秒數(shù)為15,而且第二個本來在 10s 就執(zhí)行的 job 馬上就啟動了。由此可見,concurrent屬性實際是將job推遲執(zhí)行了。各位有誰知道嗎?小弟表述不清的地方...對不住了( ?? ω ?? )y
springboot Scheduled相關問題~
慕萊塢森
2018-08-02 18:33:50