Spring @Schleduled 注释不起作用

Spring @Schleduled annotation does not work

我想要一个 spring 计划任务,它每 10 秒运行一次,但是由于某种原因,该任务只运行一次并且不再重复。

请不要建议我使用其他类型的任务,因为我需要专门使用spring个任务。

@Scheduled(fixedRate = 10000, initialDelay = 1000)
public void myTask() {
...
}

在我的主配置中 class 我也添加了 @EnableScheduling

调度是在特定时间段内执行任务的过程,但您希望使其异步,因此会有一些变化

创建一个配置 class 来管理 Async 操作,这样您就可以使用 ThreadPoolTaskExecutor:

@EnableScheduling
@Configuration
public class TaskConfig implements SchedulingConfigurer {

    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar)
    {
        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
        threadPoolTaskScheduler.setPoolSize(10);
        threadPoolTaskScheduler.setThreadNamePrefix("your-scheduler-");
        threadPoolTaskScheduler.initialize();

        scheduledTaskRegistrar.setTaskScheduler(threadPoolTaskScheduler);
    }
}

然后您可以 运行 异步作业,如下所示:

@Component
public class HelloSender {

    @Scheduled(fixedRate = 10000)
    public void myTask() {

        System.out.println("im running asynchronous with Worker : " + Thread.currentThread().getName());
    }
}

有关 ThreadPoolTaskExecutor 的更多信息,请查看此处:https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/scheduling.html