如何在通话中安排方法

问题描述 投票:0回答:1

如何通过调用方法配置要调度的方法。我的意思是什么。添加注释@Scheduled,方法是从启动应用程序调用。

我想用schedule运行这个方法(例如,每2分钟),但只有当程序调用此方法时,否则不应该安排此方法。

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

java spring-boot scheduler
1个回答
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中定义某种Scheduler(即以bean的形式)。然后在您的逻辑中(您要提交重复任务的位置),您将自动装配此执行程序并提交任务。

或者,如果要运行的表达式是无状态的,则不一定需要有一个实现Runnable的类,但您可以将其写为lambda表达式。

© www.soinside.com 2019 - 2024. All rights reserved.