JAVA全系列 教程
3762个小节阅读:7092.2k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Spring Task定时器默认是单线程的,如果项目中使用多个定时器,使用一个线程会造成效率低下。代码如下:
xxxxxxxxxx
// 定时任务类
@Component
public class MySpringTask3 {
// 5秒才可以执行完任务1
@Scheduled(cron = "* * * * * *")
public void task1() throws InterruptedException {
System.out.println(Thread.currentThread().getId()+"线程执行任务1");
Thread.sleep(5000);
}
@Scheduled(cron = "* * * * * *")
public void task2() {
System.out.println(Thread.currentThread().getId()+"线程执行任务2");
}
}
任务1较浪费时间,会阻塞任务2的运行。此时我们可以给Spring Task配置线程池。
xxxxxxxxxx
@Configuration
@ComponentScan("com.itbaizhan")
@EnableScheduling
public class SpringConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
// 创建线程池
taskRegistrar.setScheduler(Executors.newScheduledThreadPool(5));
}
}
此时任务1不会阻塞任务2的运行。
1. 在Spring Task中,注解指定该方法定时执行
A @Scheduled
B @Task
C @Component
D @EnableScheduling
2. 在Spring Task中,配置类配置Spring Task多线程任务需要实现接口
A Scheduling
B SchedulingConfigurer
C Task
D TaskConfigurer
答案
1=>A 2=>B