为了在扩展类中异步执行Abstract类中的@Scheduled任务,可以在Abstract类中创建一个独立的方法来执行该任务,并在扩展类中调用该方法。这可以通过在Abstract类中注入一个Spring TaskExecutor bean来实现。
以下是一个示例代码:
public abstract class AbstractTask {
@Autowired
private TaskExecutor taskExecutor;
@Scheduled(fixedRate = 5000)
public void executeTask() {
taskExecutor.execute(() -> {
//do something
});
}
}
public class ExtendingTask extends AbstractTask {
//do something else
}
在AbstractTask中,使用TaskExecutor将任务封装在一个lambda中,并在调度期间执行。这样,当调用executeTask()时,任务将在TaskExecutor上异步执行。
在ExtendingTask中,可以简单地继承executeTask()方法并执行适当的函数,而不必担心同步执行的问题。