如何通过调用方法配置要调度的方法。我的意思是什么。添加注释@Scheduled
,方法是从启动应用程序调用。
我想用schedule
运行这个方法(例如,每2分钟),但只有当程序调用此方法时,否则不应该安排此方法。
也许有另一种方法可以做到这一点?另一个注释?如果没有,如何配置?
使用Spring的TaskScheduler实现之一。
//Somewhere define the desired scheduler.
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler(){
ThreadPoolTaskScheduler threadPoolTaskScheduler
= new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.setThreadNamePrefix(
"ThreadPoolTaskScheduler");
return threadPoolTaskScheduler;
}
// define the task you want to run
class RunnableTask implements Runnable{
private String message;
public RunnableTask(String message){
this.message = message;
}
@Override
public void run() {
System.out.println(new Date()+" Runnable Task with "+message
+" on thread "+Thread.currentThread().getName());
}
}
// to schedule:
taskScheduler.scheduleAtFixedRate(new RunnableTask("Fixed Rate of 2 seconds") , 2000);
积分兑换Baeldung
主要思想是在ApplicationContext中定义某种Scheduler(即以bean的形式)。然后在您的逻辑中(您要提交重复任务的位置),您将自动装配此执行程序并提交任务。
或者,如果要运行的表达式是无状态的,则不一定需要有一个实现Runnable
的类,但您可以将其写为lambda表达式。