原文: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 { }