Spring 中使用 @Scheduled 创建定时任务

一、定时任务触发条件

1、在 Application 启动类上添加:@EnableScheduling

2、含定时方法的类上添加注解:@Component,该注解将定时任务类纳入 spring bean 管理。

3、在定时方法上写上:@Scheduled(cron = “0 0/1 * * * ?”),该 cron 表达式为每一分钟执行一次方法。

二、@Scheduled用法

1、fixedDelay

@Scheduled(fixedDelay = 5000)
public void testFixedDelay(){
    try {
        log.info("当前时间:" + DateUtil.now());
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

每个任务延迟3秒,然后打印当前时间。

Spring 中使用 @Scheduled 创建定时任务

fixedDelay规律总结:

前一个任务执行结束后,再等待5秒,然后执行第二个任务。

2、fixedRate

@Scheduled(fixedRate = 5000)
public void testFixedRate(){
    try {
        log.info("当前时间:" + DateUtil.now());
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

任务启动后,每隔5秒执行一次任务。

Spring 中使用 @Scheduled 创建定时任务

如果将延时时间修改为8秒,则输出变为8秒,如下图所示:

Spring 中使用 @Scheduled 创建定时任务

fixedRate规律总结:

假如设置定时任务每5秒一执行,如果前一个任务用时超过了5秒,则等前一个任务完成后就立刻执行第二次任务。如果前一个任务用时小于5秒,则等满足5秒以后,再执行第二次任务。

3、Corn表达式详解(常用)

Corn 表达式可用 秒、分、时、天、周、月、年 来表示:

秒   分   时   天   周   月   年

0 * 14 * * ? *  : 代表每天从14点开始,每一分钟执行一次。
0 0 14 * * ? *  : 代表每天的14点执行一次任务。

可使用 Corn 在线生成表达式:http://cron.qqe2.com/,来检测 Cron 的合理性。

Corn 示例:每2分钟执行一次。

@Scheduled(cron = "0 0/2 * * * ?")
public void test() {
    int j = 0;
    for (int i = 0; i < 10; i++) {
        log.info("Scheduled测试");
        j++;
        log.info("j的值为:" + j);
        try {
            Thread.sleep(1000 * 20);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

效果:

Spring 中使用 @Scheduled 创建定时任务

总结

如上述代码所示,设置 test() 方法每2分钟执行一次。但如果前一个任务执行时长超过了2分钟,则第二个任务会等待前一个任务完成后的一段时间后再执行第二个任务。

Spring 中使用 @Scheduled 创建定时任务

Original: https://www.cnblogs.com/createboke/p/11639163.html
Author: CREATE_17
Title: Spring 中使用 @Scheduled 创建定时任务

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/714267/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • oclint 是编译器缺省语法检查功能的增强

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月30日
    099
  • React算法复杂度优化?

    react树对比是按照层级去对比的, 他会给树编号0,1,2,3,4…. 然后相同的编号进行比较。所以复杂度是n,这个好理解。 关键是传统diff的复杂度是怎么算的?传…

    技术杂谈 2023年5月31日
    097
  • nodejs新进程子进程

    获取进程相关的基本信息 #!/bin/env node console.log (process.execPath) console.log (process.cwd()) con…

    技术杂谈 2023年5月31日
    083
  • dremio InfoSchemaScanCreator 参考调用链

    Press Q or Ctrl+C to abort. Affect(class count: 1 , method count: 2) cost in 260 ms, liste…

    技术杂谈 2023年5月30日
    094
  • Docker简介与安装

    Docker简介与安装 Docker overview | Docker Documentation 官方文档 1.Docker简介 Docker是一个用于开发、发布和运行应用程序…

    技术杂谈 2023年7月10日
    097
  • GFS-Google 文件系统

    GFS分布式文件系统 简介 GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体…

    技术杂谈 2023年7月11日
    073
  • 燕千云YQCloud数智化业务服务平台发布1.12版本

    2022年4月29日,燕千云 YQCloud 数智化业务服务平台发布1.12版本,优化客户服务场景、深化智能预测服务的应用,加强系统在多渠道方面的集成,全面提升企业数智化服务的能力…

    技术杂谈 2023年7月23日
    096
  • webStorage的分类及使用

    相关API: xxxStorage.setItem(‘key’, ‘value’); 该方法接受一个键和值作为参数,会把键值对添加到…

    技术杂谈 2023年6月21日
    072
  • 「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之数据库逆向(十二)

    基于Vue和Quasar的前端SPA项目实战之数据库逆向(十二) 回顾 通过之前文章基于Vue和Quasar的前端SPA项目实战之动态表单(五)的介绍,实现了动态表单功能。如果是全…

    技术杂谈 2023年7月24日
    077
  • flink-kafka-connector 的实现

    简单介绍 flink-kafka-connector用来连接kafka,用于消费kafka的数据, 并传入给下游的算子。 使用方式 首先来看下flink-kafka-connect…

    技术杂谈 2023年6月21日
    0114
  • tcpreplay重放报文,tcpdump能抓到包,应用程序收不到包

    现象: 生产环境中有两台服务器A、B,A服务器实时有报文发往B服务器。为了在测试环境测试新功能,故在现网A服务器上tcpdump抓取发往B服务器的报文,然后在测试环境tcprewr…

    技术杂谈 2023年7月11日
    080
  • PPPOE

    PPPoE(英语:Point-to-Point Protocol Over Ethernet),以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中…

    技术杂谈 2023年5月31日
    088
  • 了解Unicode编码

    一. Unicode是什么? Unicode是一种字符编码方案,它为每种语言中的每个字符都设定了统一唯一的二进制编码。以实现跨语言、跨平台进行文本转换。 Unicode是为了解决传…

    技术杂谈 2023年6月1日
    094
  • 五个维度打造研发管理体系【原创】

    技术管理者(技术总监/经理/CTO)期望通过体系化的管理方式建设,能够在百人,千人以上的团队中有效的构建聚焦目标,自我成长,高效能的研发作战团队,快速拿出成果,支撑业务的快速发展。…

    技术杂谈 2023年7月23日
    077
  • FlinkSQL 之乱序问题

    乱序问题 在业务编写 FlinkSQL 时, 非常常见的就是乱序相关问题, 在出现问题时,非常难以排查,且无法稳定复现,这样无论是业务方,还是平台方,都处于一种非常尴尬的地步。 在…

    技术杂谈 2023年6月21日
    085
  • go-micro集成链路跟踪的方法和中间件原理

    前几天有个同学想了解下如何在go-micro中做链路跟踪,这几天正好看到wrapper这块,wrapper这个东西在某些框架中也称为中间件,里边有个opentracing的插件,正…

    技术杂谈 2023年7月11日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球