如何安排通话方法

时间:2019-04-24 10:00:37

标签: java spring-boot scheduler

如何通过调用方法配置要计划的方法。我的意思是添加注释@Scheduled时,方法正在从启动应用程序中调用。

我想使用schedule(例如,每2分钟)运行此方法,但前提是程序调用此方法,否则不应该安排此方法

也许还有另一种方法可以做到这一点?另一个注释?如果没有,该如何配置?

1 个答案:

答案 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表达式。