Spring Task 定时器
一、快速实现定时器
Spring3.0以后自带了定时器
Spring Task 不支持分布式任务调度,在分布式环境下可以使用XXL Job 、Quartz、Elastic Job等分布式任务调度框架
@EnableScheduling 开启定时任务
@Scheduled(cron = “* * * * * ?”) 定时任务注解
@EnableScheduling //开启定时任务
@Component
public class ScheduleTest {
@Scheduled(cron = "* * * * * ?") //定时器注解
public void jobTest(){
System.out.println("定时器执行了");
}
}
Spring Task 的弊端
需要注意的是 Spring Task 是默认单线程的
二、Spring Task多线程配置
# 任务调度线程池 这里配置才会生效
# 任务调度线程池大小 默认 1 建议根据任务加大
spring.task.scheduling.pool.size=1
# 调度线程名称前缀 默认 scheduling-
spring.task.scheduling.thread-name-prefix=scheduling-
# 线程池关闭时等待所有任务完成
spring.task.scheduling.shutdown.await-termination=
# 调度线程关闭前最大等待时间,确保最后一定关闭
spring.task.scheduling.shutdown.await-termination-period=
# 任务执行线程池配置
# 是否允许核心线程超时。这样可以动态增加和缩小线程池
spring.task.execution.pool.allow-core-thread-timeout=true
# 核心线程池大小 默认 8
spring.task.execution.pool.core-size=8
# 线程空闲等待时间 默认 60s
spring.task.execution.pool.keep-alive=60s
# 线程池最大数 根据任务定制
spring.task.execution.pool.max-size=
# 线程池 队列容量大小
spring.task.execution.pool.queue-capacity=
# 线程池关闭时等待所有任务完成
spring.task.execution.shutdown.await-termination=true
# 执行线程关闭前最大等待时间,确保最后一定关闭
spring.task.execution.shutdown.await-termination-period=
# 线程名称前缀
spring.task.execution.thread-name-prefix=task-