如何通过调用方法配置要计划的方法。我的意思是添加注释@Scheduled
时,方法正在从启动应用程序中调用。
我想使用schedule
(例如,每2分钟)运行此方法,但前提是程序调用此方法,否则不应该安排此方法。
也许还有另一种方法可以做到这一点?另一个注释?如果没有,该如何配置?
答案 0 :(得分:0)
使用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中定义某种调度程序(即,以bean的形式)。然后,按照您的逻辑(要提交重复任务的位置),自动连接该执行程序并提交任务。
或者,如果要运行的表达式是无状态的,则不一定需要有一个实现Runnable
的类,但是您可以将其编写为lambda表达式。