java - spring 定時任務執行異常
phpcn_u1582
phpcn_u1582 2017-05-17 10:02:53
0
1
933

本來是每天週一到週五凌晨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任務卻執行了。 。 。

phpcn_u1582
phpcn_u1582

全部回覆(1)
过去多啦不再A梦

我猜你並沒有指定定時任務的pool size,所以預設所有schedule的共用一個執行緒。需要指定schedule 的pool size大小

xml

<task :annotation-driven scheduler ="myScheduler" />
<task :scheduler id ="myScheduler" pool-size ="10" />

bean

  @Bean(destroyMethod = "shutdown")
    public Executor taskScheduler() {
        return Executors.newScheduledThreadPool(10);
    }

補充:
共用一個線程將帶來嚴重的問題。如果A任務沒有在2小時內執行完,那麼B任務的執行時間將會延遲,甚至不執行。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!