我正在尝试使用@Scheduled方法来处理一些常规工作(每秒)。此方法的主体可以在一秒以上的时间内处理,我看到如果发生这种情况,则不会启动下一次执行。Spring 是否支持它或者我应该将它更改为任何其他并发解决方案?
我曾尝试将 Scheduler 更改为ConcurrentTaskScheduler,但看起来只有当我们的调度方法很少时它才有用。
@Service
public class MainService {
@Scheduled(cron = "* * * * * *")
public void doSomething() {
//some logic which can takes more than 1 second
}
}
@Configuration
public class SchedulingConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
}
@Bean
public Executor taskExecutor() {
return new ConcurrentTaskScheduler(
Executors.newScheduledThreadPool(100));
}
}
一旦第一次执行花费了额外的时间,第二次执行将不会开始。否则,一切正常。如何设置一个预定方法的并行执行?
呼如林
收到一只叮咚
随时随地看视频慕课网APP
相关分类