task與quartz有什么區別?
1、相同點:
兩者均能實現定時調度任務
2、quartz
① 默認多線程異步執行
② 單個任務時,在上一個調度未完成時,下一個調度時間到時,會另起一個線程開始新的調度。業務繁忙時,一個任務會有多個調度,可能導致數據處理異常。
③ 多個任務時,任務之間沒有直接影響,多任務執行的快慢取決于CPU的性能
④ 觸發方式 : (1)SimpleTrigger (2)CronTrigger
⑥ 能被集群實例化,支持分布式部署
⑦使用JobStoreCMT(JDBCJobStore的子類),Quartz 能參與JTA事務;Quartz 能管理JTA事務(開始和提交)在執行任務之間,這樣,任務做的事就可以發生在JTA事務里。
3、Task:
① 默認單線程同步執行
② 單個任務時,當前次的調度完成后,再執行下一次任務調度
③ 多個任務時,一個任務執行完成后才會執行下一個任務。若需要任務能夠并發執行,需手動設置線程
④ 觸發方式:
與Quartz的CronTrigger的表達式類似
可以使用注解標注定時任務
4、總結:
4-1:pring task使用和配置起來更簡單,更輕量。
4-2:任務執行,spring task的調度任務是串行的,意思就是如果配了多個任務的話,前面一個任務沒有結束,后面的任務即使是時間到點了也不會跑。Quartz采用多線程 ,quartz默認情況下可以跑,不過網上說配置下也可以控制等上一個任務結束才能跑。
4-3:實現,Task注解實現方式,比較簡單。Quartz需要手動配置Jobs。
4-4:調度,Task采用順序執行:若當前調度占用時間過長,下一個調度無法及時執行;
Quartz采用異步:下一個調度時間到達時,會另一個線程執行調度,不會發生阻塞問題,但調度過多時可能導致數據處理異常
4-5:部署,Quartz可以采用集群方式,分布式部署到多臺機器,分配執行定時任務