spring @Scheduled 带注释的方法是否在不同的线程上运行?
2022-08-31 10:49:18
我有几种方法用注释。@Scheduled(fixedDelay=10000)
在应用程序上下文中,我有这个注释驱动的设置:
<task:annotation-driven />
问题是,有时某些方法执行会延迟几秒钟甚至几分钟。
我假设即使一个方法需要一段时间才能完成执行,其他方法仍然会执行。所以我不明白延迟。
有没有办法减少甚至消除延迟?
我有几种方法用注释。@Scheduled(fixedDelay=10000)
在应用程序上下文中,我有这个注释驱动的设置:
<task:annotation-driven />
问题是,有时某些方法执行会延迟几秒钟甚至几分钟。
我假设即使一个方法需要一段时间才能完成执行,其他方法仍然会执行。所以我不明白延迟。
有没有办法减少甚至消除延迟?
为了完整起见,下面的代码显示了使用java配置调度程序的最简单方法:
@Configuration
@EnableScheduling
public class SpringConfiguration {
@Bean(destroyMethod = "shutdown")
public Executor taskScheduler() {
return Executors.newScheduledThreadPool(5);
}
...
当需要更多控制时,类可以实现 。@Configuration
SchedulingConfigurer
关于调度的文档说:
如果未提供池大小属性,则缺省线程池将只有一个线程。
因此,如果您有许多计划任务,则应按照文档中的说明配置计划程序,以拥有一个包含更多线程的池,以确保一个长任务不会延迟所有其他任务。