在Spring定時任務中,可以通過以下兩種方式來防止重復調用:
@Scheduled
注解的fixedDelay
屬性:fixedDelay
表示前一次任務執行完畢后,延遲固定的時間再執行下一次任務。可以確保每次任務執行的間隔時間固定,并避免重復調用。例如:@Scheduled(fixedDelay = 5000) // 每次任務執行完畢后延遲5秒再執行下一次任務
public void task() {
// 任務邏輯...
}
@Scheduled
注解的fixedRate
屬性:fixedRate
表示以固定的頻率執行任務,不考慮前一次任務執行是否完成。如果前一次任務未執行完畢,則會在下一個周期繼續執行。可以確保任務按照固定的頻率執行,但可能會出現重復調用的情況。例如:@Scheduled(fixedRate = 5000) // 每隔5秒執行一次任務,不管上一次任務是否執行完畢
public void task() {
// 任務邏輯...
}
根據具體的需求,選擇適合的方式來防止重復調用。