I:
春ブートアプリケーションでは、私はいくつかのスケジュールされたタスクを持っています。私は私の構成では、私が作成する必要があり、それらを同時に実行したいThreadPoolTaskScheduler
オブジェクトをし、それを登録しますScheduledTaskRegistrar
。私はそれを行うには、2つの方法を見つけます:
方法1
@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);
}
}
方法2
@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;
}
}
- どっちが優れているか、彼らはまったく同じですか?
- なぜな方法でThreadPoolTaskSchedulerオブジェクトの2 initializeメソッドが呼び出されていませんか?
user7294900:
あなたがため、2番目の方法が優れている春のハンドルクラスを聞かせて TaskScheduler
、後であなたが使用して他のクラスでそれを使用することができます@Autowired
よう:
@Autowired
TaskScheduler taskScheduler