gpt4 book ai didi

java - Spring Boot - 调度程序配置

转载 作者:行者123 更新时间:2023-12-03 12:59:02 25 4
gpt4 key购买 nike

在 Spring Boot 应用程序中,我有几个计划任务。我希望它们同时运行,因此在我的配置中我应该创建 ThreadPoolTask​​Scheduler 对象并将其注册到 ScheduledTaskRegistrar 中。 我找到了两种方法:

方式一

@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {

private final int POOL_SIZE = 10;

@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {

ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();

scheduler.setPoolSize(POOL_SIZE);
scheduler.setThreadNamePrefix("name");
scheduler.initialize();

scheduledTaskRegistrar.setTaskScheduler(scheduler);
}
}

方式二

@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {

private final int POOL_SIZE = 10;

@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {

scheduledTaskRegistrar.setTaskScheduler(this.poolScheduler());
}

@Bean
public TaskScheduler poolScheduler() {

ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();

scheduler.setPoolSize(POOL_SIZE);
scheduler.setThreadNamePrefix("name");

return scheduler;
}
}
  1. 哪种方式更好,或者他们做的完全一样?
  2. 为什么方法2中没有调用ThreadPoolTask​​Scheduler对象的initialize方法?

最佳答案

为什么方式2中没有调用ThreadPoolTask​​Scheduler对象的initialize方法?

因为现在,ThreadPoolTask​​Scheduler 是一个 bean,它遵循 Bean 生命周期。

可以看到ThreadPoolTask​​Scheduler实现了InitializingBean。所以在 spring 构建这个 bean 之后,它会调用 afterPropertiesSet() 方法。

如果您检查 ThreadPoolTask​​Scheduler 的代码,您将看到:

public void afterPropertiesSet() {
this.initialize();
}

关于java - Spring Boot - 调度程序配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53630419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com