1 回答
TA贡献1816条经验 获得超4个赞
对的,这是可能的。假设您实现 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();
}
}
}
希望能帮助到你
编辑
我提供了未经测试的代码。最近当我试图重新创建这个场景时,我注意到如果doMyJob在SchedulingConfigurer中,它不会是真正的异步(如果延迟是 5 秒并且作业需要 10 秒,下一个作业仅在 10 秒后运行)。但是将方法移至服务类会有所帮助。
添加回答
举报