Spring Boot实用小技巧2 - 第524篇
在Spring Boot中,我们可以使用@Scheduled
注解来创建定时任务。但是,有时我们可能需要动态地启动和停止这些定时任务。以下是一个如何动态启停Spring Boot定时任务的例子:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
@Configuration
@EnableScheduling
public class DynamicScheduleConfig implements SchedulingConfigurer {
private final ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskScheduler.initialize();
taskRegistrar.setTaskScheduler(taskScheduler);
}
@Scheduled(fixedRate = 5000)
public void fixedRateTask() {
System.out.println("Fixed rate task: " + System.currentTimeMillis());
}
public void startTask() {
taskScheduler.start();
}
public void stopTask() {
taskScheduler.shutdown();
}
}
在这个例子中,我们定义了一个DynamicScheduleConfig
类,它实现了SchedulingConfigurer
接口。我们创建了一个ThreadPoolTaskScheduler
,并在configureTasks
方法中将其设置为任务调度器。我们还定义了一个@Scheduled
注解的方法fixedRateTask
,它将以固定频率执行。
通过调用startTask
方法,我们可以启动定时任务,而stopTask
方法可以停止定时任务。这样,我们就可以根据需要动态地启动或停止定时任务了。
评论已关闭