spring boot @Scheduled定时任务线程池配置类
程序员文章站
2022-05-01 14:26:01
...
@Scheduled 这个注解给我们带了很大的方便,我们只要加上该注解,并且根据需求设置好就可以使用定时任务了。
但是,我们需要注意的是,@Scheduled 并不一定一定会按时执行。
因为使用@Scheduled 的定时任务虽然是异步执行的,但是,不同的定时任务之间并不是并行的!!!!!!!!
在其中一个定时任务没有执行完之前,其他的定时任务即使是到了执行时间,也是不会执行的,它们会进行排队。
也就是如果你想你不同的定时任务互不影响,到时间就会执行,那么你最好将你的定时任务方法自己搞成异步方法,这样,
定时任务其实就相当于调用了一个线程执行任务,一瞬间就结束了。当然,也可以勉强当做是任务都会定时执行。
加上下面这个配置类就可以使定时任务变成异步的了
package com.ahav.util;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@Configuration
@EnableScheduling
public class ScheduleConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
}
@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(15); //指定线程池大小
}
}
推荐阅读
-
Spring Boot @Scheduled定时任务代码实例解析
-
spring boot使用自定义的线程池执行Async任务
-
Spring Boot中配置定时任务、线程池与多线程池执行的方法
-
Spring Boot入门(三):使用Scheduled注解实现定时任务
-
springboot scheduled 解决多定时任务不执行的问题,多线程配置的几种方式
-
Spring Boot @Scheduled定时任务代码实例解析
-
spring boot使用自定义的线程池执行Async任务
-
java定时任务_Spring Boot 整合 Quartz 实现 Java 定时任务的动态配置
-
Spring boot 多线程执行Spring定时任务
-
Spring Boot中配置定时任务、线程池与多线程池执行的方法