
定时任务Spring Schedule
发布日期:2021-05-08 14:12:42
浏览次数:18
分类:精选文章
本文共 1081 字,大约阅读时间需要 3 分钟。
常见的定时任务框架
实现方式 | cron表达式 | 固定时间执行 | 固定频率执行 | 开发难易程度 |
---|---|---|---|---|
JDK 的TimeTask-Timer | 不支持 | 支持 | 支持 | 复杂 |
Spring Schedule | 支持 | 支持 | 支持 | 简单 |
Quartz | 支持 | 支持 | 支持 | 难 |
Spring Schedule :
1·开启定时任务
要开启定时任务功能,只需要在启动类上加载一个@EnableScheduling
注解即可。
2·定义任务
-
声明类,通过
@Component
注解注册到Spring容器 -
类中定义方法,方法内部编写任务逻辑
-
方法上添加注解
@Scheduled(fixedRate = 1000)
来定义任务执行频率,-
这里的fiexRate=1000,代表是每隔1000毫秒执行
-
默认情况下,定时任务的线程池大小只有1,当任务较多执行频繁时,会出现阻塞等待的情况,任务调度器就会出现时间漂移,任务执行时间将不确定。
自定义线程池的大小:
spring:
task: scheduling: pool: size: 10定时策略
在方法上添加注解@Scheduled
可以控制定时执行的频率,有三种策略:
-
fixedRate:按照固定时间频率执行,单位毫秒,即每xx毫秒执行一次。
-
如果上一个任务阻塞导致任务积压,则会在当前任务执行后,一次把多个积压的任务都执行完成
-
举例:假如任务执行每秒1次,而第一个任务执行耗时4秒,会导致4个任务积压,在第一个任务执行后,积压的4个任务会立即执行,不再等待
-
-
fixedDelay:固定延迟执行,单位毫秒,即前一个任务执行结束后xx毫秒执行第二个任务。
-
如果上一个任务阻塞导致任务积压,则会在当前任务执行后xx毫秒执行下一个任务
-
-
cron:知名的cron表达式,使用表达式规则来定义任务执行策略,与fixedDelay类似的。
@Componentpublic class HelloJob { @Scheduled(fixedRate = 1000) public void hello(){ log.info("hello spring schedule!"); }}
@Componentpublic class HelloJob { @Scheduled(cron = "0/2 * * * * ?") public void hello() throws InterruptedException { log.info("hello spring schedule!"); }}
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年03月26日 18时48分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【转】如何用css限制文字长度,使溢出的内容用省略号…显示
2021-05-09
Android MediaPlayer setDataSource failed
2021-05-09
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
2021-05-09
【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
2021-05-09
如何查看jsplumb.js的API文档(YUIdoc的基本使用)
2021-05-09
大前端的自动化工厂(1)——Yeoman
2021-05-09
数据仓库建模方法论
2021-05-09
数据仓库之拉链表
2021-05-09
虚拟机搭建hadoop环境
2021-05-09
redis 删除大key集合的方法
2021-05-09
DataStax Bulk Loader教程(三)
2021-05-09
DataStax Bulk Loader教程(四)
2021-05-09
为何选择云原生?
2021-05-09
物联网、5G世界与大数据管理
2021-05-09
Cassandra与Kubernetes
2021-05-09
行业动态 | 利用云端Cassandra实时推送个性化广告
2021-05-09
.NET应用框架架构设计实践 - 概述
2021-05-09