1 回答

TA貢獻1816條經(jīng)驗 獲得超4個贊
對的,這是可能的。假設(shè)您實現(xiàn) SchedulingConfigurer 的類有一個方法 doMyJob()。您可以使用 Async 注釋該方法并使用 FixedRateTask 中的引用。還要注意類級別注釋
@Configuration
@EnableAsync
public class MyJobConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.scheduleFixedRateTask(new FixedRateTask(this::doMyJob, 500L, 0L));
}
@Async
public void doMyJob() {
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
希望能幫助到你
編輯
我提供了未經(jīng)測試的代碼。最近當我試圖重新創(chuàng)建這個場景時,我注意到如果doMyJob在SchedulingConfigurer中,它不會是真正的異步(如果延遲是 5 秒并且作業(yè)需要 10 秒,下一個作業(yè)僅在 10 秒后運行)。但是將方法移至服務(wù)類會有所幫助。
添加回答
舉報