quartz任務執行完之后再執行下一輪任務 避免頻率過快並發情況


原文:https://www.cnblogs.com/eagle-xie/p/8657395.html

默認情況下,當Job執行時間超過間隔時間時,調度框架為了能讓任務按照我們預定的時間間隔執行,會馬上啟用新的線程執行任務。

 

若我們希望當前任務執行完之后再執行下一輪任務,也就是不要並發執行任務,該如何解決呢?

第一種方法:設置 quartz.threadPool.threadCount 最大線程數為 1。這樣到了第二次執行任務時,若當前還沒執行完,調度器想新開一個線程執行任務,但我們卻設置了最大線程數為 1 個(即:沒有足夠的線程提供給調度器),則調度器會等待當前任務執行完之后,再立即調度執行下一次任務。(注意:此方法僅適用於Quartz中僅有一個Job,如果有多個Job,會影響其他Job的執行)

第二種方法:在 Job 類的頭部加上 [DisallowConcurrentExecution],表示禁用並發執行。(推薦使用此方法)

//不允許此 Job 並發執行任務(禁止新開線程執行)
[DisallowConcurrentExecution]
public class Job1 : IJob
{
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM