quartz任務並行

2021-06-20 16:23:52 字數 1483 閱讀 9409

任務有並行和序列之分,並行是指:乙個定時任務,當執行時間到了的時候,立刻執行此任務,不管當前這個任務是否在執行中;序列是指:乙個定時任務,當執行時間到了的時候,需要等待當前任務執行完畢,再去執行下乙個任務。

quartz框架中防止任務並行可以有兩種方案:

1、如果是

通過methodinvokingjobdetailfactorybean在執行中動態生成的job,

配置的xml檔案有個concurrent屬性,這個屬性的功能是配置此job是否可以並行執行,如果為false則表示不可以並行執行,否則可以並行。

如果乙個job的業務處理髮費的時間超過了job的啟動的間隔時間(repeatinterval),這個屬性非常有用。如果為false,那麼,在這種情況下,當前job還在執行,那麼下乙個job只能延時執行。如果為true,那麼job就會並行執行。

<

bean

id="

jobcompareb2candlocal

" class

="com.vipshop.management.util.quartz.methodinvokingjobdetailfactorybean

">

<

property

name

="targetobject

"ref

="delegatejob

"/>

<

property

name

="targetmethod

"value

="方法名" 

/>

<

property

name

="concurrent

"

value

="false

"

>

property

>

bean

>

2、如果是通過

自定義要執行的任務的類的名稱實現job的話,則有另一種方式:

預設的任務的類實現org.quartz.job介面,此時任務是stateless(無狀態的),即會出現並行的情況,那麼如何避免這種情況發生呢?

解決方案:使quartzjobbean類實現org.quartz.statefuljob介面即可(

statefuljob介面僅僅是擴充套件了 job 介面,未加入新的方法,

可以不需實現job介面了

),那麼此時任務就會變成stateful(有狀態的),此時的任務也就會序列執行了。

public

class

backcoupon

implements

statefuljob

}

Quartz定時任務的並行與序列

quartz定時任務的並行與序列 1.quartz定時任務的執行策略有並行和序列之分。所謂並行是指多個任務同時執行的情況,即若兩個任務的執行時間存在重疊,兩個任務同時執行的情況。序列則是指乙個任務必須等其前乙個任務執行完畢之後再執行的策略。2.spring整合quartz時,控制定時任務的並行和序列...

quartz石英任務

定時任務 quartz 的幾大核心概念 job 任務 我們需要完成的事情 要炸大本營 jobdetail 任務詳情 任務怎麼做,誰來做 執行任務需要的物件,資料資訊等 張三,50噸tnt quartz 為了併發執行 job 定義任務怎麼執行的類 jobdetail 當次執行的例項 trigger 觸...

Quartz任務執行

quartz任務排程器,有個很憂傷的限制,就是提交的任務只能指定job class型別,具體job的例項例項化有quartz來建立,且任務每次執行都會建立乙個job例項,在某些場景下,我們可能需要傳遞乙個job例項 比如job的屬性有其他方式注入 那麼直接使用quartz則不太能滿足,我們需要借助d...