Spring Task 定时任务没有定时执行

来源:侠梦的开发笔记

前言

 

 

 

定时任务的使用,在开发中可谓是家常便饭了,定时发送邮件、短信。避免数据库,数据表过大,定时将数据转储。通知、对账等等场景。

当然实现定时任务的方式也有很多,比如使用 linux下的 crontab 脚本,jdk 中自带的 Timer 类。Spring Task或是 Quartz 。

相信你也有过如下的疑问:

  • Spring Task 的 crontab 的表达式 和linux下的 crontab 有什么区别?

  • crontab 表达式记不住?

  • 定时任务阻塞会有什么影响?

  • 多个定时任务的情况下如何运行的?

  • 具有相同表达式的定时任务,他们的执行顺序如何?

  • 为什么async异步任务没有生效?

所以这篇文章,我们来介绍一下,在 Spring Task 中, 定时任务的执行原理及相关问题。演示环境为 Spring Boot 项目。

 

SpringBoot 定时任务的原理

 

 

 

相信绝大部分开发者都使用过 Spring Boot ,它为我们提供的 Starter 包含了定时任务的注解。所以我们来主要介绍一下 Spring Boot 实现定时任务的原理,和其相关注解的作用。

Spring 在 3.0版本后通过 @Scheduled 注解来完成对定时任务的支持。

在使用时,需要在Application 启动类上加上 @EnableScheduling 注解,它是从Spring 3.1后开始提供的。

由于Spring3 版本较低,使用得比较少了,我们使用高版本可能并不会考虑太多细节,大多只需要关注目标实现,所以我们在配套使用两个注解的时候,并不会出现什么问题。

在3.0 中 ,是通过

<!-- 配置任务线性池 -->  
    <!-- 任务执行器线程数量 --> 
    &l
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值