seo关键词排名优化矩阵系统,湖北网站优化公司,住房城乡建设门户网站,云匠网接单能信吗场景
SpringBoot中定时任务与异步定时任务的实现#xff1a;
SpringBoot中定时任务与异步定时任务的实现_霸道流氓气质的博客-CSDN博客
使用SpringBoot原生方式实现定时任务#xff0c;已经开启多线程支持#xff0c;以上是方式之一。
除此之外还可通过如下方式。
为什…场景
SpringBoot中定时任务与异步定时任务的实现
SpringBoot中定时任务与异步定时任务的实现_霸道流氓气质的博客-CSDN博客
使用SpringBoot原生方式实现定时任务已经开启多线程支持以上是方式之一。
除此之外还可通过如下方式。
为什么Spring Boot 定时任务是单线程的
查看注解EnableScheduling源码可知 protected void scheduleTasks() {if (this.taskScheduler null) {this.localExecutor Executors.newSingleThreadScheduledExecutor();this.taskScheduler new ConcurrentTaskScheduler(this.localExecutor);} 为了验证单线程所以编写模拟堵塞的测试方法
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.concurrent.TimeUnit;Component
EnableScheduling
public class TestTask {Scheduled(fixedRateString 15000)public void test1() throws InterruptedException {System.out.println(task1:LocalDateTime.now());//moni yanchiTimeUnit.SECONDS.sleep(10);}Scheduled(fixedRateString 3000)public void test2() {System.out.println(task2:LocalDateTime.now());}
}
执行结果 注
博客霸道流氓气质_C#,架构之路,SpringBoot-CSDN博客
实现
1、方案一
Spring Boot quartz 已经提供了一个配置用来配置线程池的大小
添加如下配置
spring:task:scheduling:pool:size: 10
再次进行堵塞测试发现正常 2、方案二
重写SchedulingConfigurer#configureTasks()
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import java.util.concurrent.Executors;//直接实现SchedulingConfigurer这个接口设置taskScheduler
Configuration
public class ScheduleConfig implements SchedulingConfigurer {Overridepublic void configureTasks(ScheduledTaskRegistrar taskRegistrar) {taskRegistrar.setScheduler(Executors.newScheduledThreadPool(10));}
}
3、方案三
参考上面结合Async的方式。