spring-boot 实现定时任务@Scheduled

2023-11-17

@Scheduled

只适合处理简单的计划任务,不能处理分布式计划任务。优势:是spring框架提供的计划任务,开发简单,执行效率比较高。且在计划任务数量太多的时候,可能出现阻塞,崩溃,延迟启动等问题

  • 启动类中加入@EnableScheduling
  • 要开启定时任务的方法上加入@Scheduled
  • 设置任务执行的时间间隔

@EnableScheduling 注解的作用是启用Spring的计划任务执行能力。
注意:@EnableScheduling只应用于它的本地应用程序上下文,允许在不同级别选择性地调度bean。

@Scheduled 标记要调度的方法的注释。 必须指定cron、fixedDelay或fixedRate属性中的一个。
带注释的方法必须没有参数。 它通常有一个void返回类型; 如果不是,则通过调度器调用返回值时将被忽略。

比较常用的有两种方式去设置时间间隔,fixedRate和cron表达式

第一种设置时间间隔的方式是fixedRate属性

这种方式比较简单,只适用于对时间掌控不是很高的情况下,例如,每分钟执行一次,部分白天还是黑夜。

@Scheduled(fixedRate = 301000) :表示每30秒执行一次。这个也是按照时间进制来的,1000代表是毫秒进制30代表就是30秒,若是想每小时执行一次也是可以继续16060*1000。

	@Scheduled(fixedRate = 30*1000)
    public void he(){
        System.out.println("女神吃药"+ DateFormat.getDateTimeInstance().format(new Date()));
    }

第二种方式 cron表达式

	@Scheduled(cron = "* * 9-22 * * ?")
    public void show(){
        System.out.println("女神喝水"+ DateFormat.getDateTimeInstance().format(new Date()));
    }

上述cron表达式代表的是:我每个月 每天 9-22时 的每分每秒都执行一次。
cron表达式的时间格式是cron= “秒 分钟 小时 天 月 星期”
有兴趣学习cron表达式的同学可以点击下面的链接,里面有阿里云提供的详细的教程。
https://help.aliyun.com/knowledge_detail/64769.html

异步多线程定时任务

@Scheduled 在计划任务数量太多的时候,可能出现阻塞,崩溃,延迟启动等问题,为了解决这个问题,我们可以采用异步多线程的方式,利用多个线程来管理定时任务,不让任务丢失。

  • Application启动类中加入开启异步操作的注解 @EnableAsync
  • 在要异步开启定时任务的方法上加入异步注解 @Async

这样就不会一个任务没有执行完毕,而阻塞另一个任务的执行

@EnableAsync 启用Spring的异步方法执行功能

@Async 将方法标记为异步执行候选方法的注释。也可以在类型级别使用,在这种情况下,所有类型的方法都被认为是异步的。但是请注意,@Configuration类中声明的方法不支持 @Async

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring-boot 实现定时任务@Scheduled 的相关文章

随机推荐

  • 电脑主板接口_如何看电脑主板 M.2 接口是支持 SATA 还是 NVMe 固态硬盘?

    飚王出品 必是精品 你的电脑能 吃鸡 吗 这句话已经成为检验一台电脑配置是否过硬的标准之一 电脑是否能 吃鸡 除了 CPU GPU 必须强悍 内存要大外 选择固态硬盘也会在安装和加载游戏时有 加持 效果 NVMe M 2 固态硬盘 固态硬盘
  • 【华清远见嵌入式培训】C基础

    Linux命令基础 1 Linux文件类型 bsp lcd 七种 b 块 block 设备文件 存储设备 硬盘 SD卡 dev sd s 套接字 socket 文件 网络编程 p 管道 pipe 文件 I O编程 普通文件 c文件 h文件
  • 遇见狂神说,JavaSE基础总结(完整思维导图)

    转自 狂神学JAVA 基础篇 JavaSE Xmind总结 思维导图 Bilibili源视频 狂神说Java JavaSE阶段回顾总结 学习 思维导图与实际知识点结合
  • 虚拟机桥接模式连不上网问题(非桥接网卡原因)

    虚拟机和宿主机可以互相ping通 但是ping www baidu com不能成功 常见的原因是桥接到的网卡不对 网上搜也是大部分搜到这种原因解决办法 参见解决VMware虚拟机桥接模式上不了网 我遇到的问题不是这个 是因为我没有配置网关
  • c++赋值(赋值为函数返回值)语句的返回值问题

    不知道为什么 之前一直脑子里有一个误解 赋值语句的返回值应该是1 成功赋值 或0 赋值失败 今天其实在学linux的时候突然揣摩了一下代码才发现这个问题 if dir opendir home ljz Desktop NULL opendi
  • ABB ACS 510 1.5-5.5kw驱动板图纸 PDF格式

    ABB ACS 510 1 5 5 5kw驱动板图纸 PDF格式 编号 3416654015862907LHY782717783
  • ASP.NET Core WebAPI学习-4

    ASP NET Core WebAPI学习 1 ASP NET Core WebAPI学习 2 ASP NET Core WebAPI学习 3 ASP NET Core WebAPI学习 4 ASP NET Core WebAPI学习 5
  • Wxml2Canvas的bug之旅

    Wxml2Canvas的bug之旅 问题描述 微信小程序当你想根据节点生成海报图片 会想到wxml2canvas这个插件 就会遇到下列问题 在页面组件中直接使用是没什么问题的 但是当你要写到自定义组价去就会出现bug bug1 微信小程序中
  • 数据库中的连接查询方式(基本)

    1 问题描述 在数据库的学习中 我们知道数据库涉及到多表查询的时候需要用到不同的连接查询方式 SQL中将连接分成 内连接 外连接 自然连接 交叉连接 其中内连接与外连接是比较常用的连接 内连接 从左表中取出数据去跟右表中的所有记录进行匹配
  • ChatGPT大解密:带您探讨机器学习背后的秘密、利用与发展

    一 什么是机器学习 二 ChatGPT 的运作原理 三 ChatGPT 生活利用 1 自然语言处理 2 翻译 3 自动回复 四 ChatGPT vs 其他相关技术 五 ChatGPT 的未来 1 未来发展 2 职业取代 3 客服人员 4 翻
  • Loaded runtime CuDNN library: 8.0.5 but source was compiled with: 8.1.0. CuDNN library needs to hav

    2021 08 16 Loaded runtime CuDNN library 8 0 5 but source was compiled with 8 1 0 CuDNN library needs to have matching ma
  • 行业经验

    原文地址 http www blogjava net ITdavid archive 2008 01 21 176730 html 很多职场新人都谈到了工作经验的问题 似乎招聘公司不给你机会 你就没办法获得必要的工作经验 其实并不一定 很多
  • 前端用js实现粘贴图片实现上传图片功能

    前端实现粘贴复制图片 引入实现粘贴复制功能的外部js文件 设置放置图片的盒子 监听粘贴事件 实现上传功能 粘贴即上传 实现效果截图 引入实现粘贴复制功能的外部js文件 引入复制的外部js文件 设置放置图片的盒子 给放置图片的盒子设置可编辑里
  • React (七)

    React 组件 API 在本章节中我们将讨论 React 组件 API 我们将讲解以下7个方法 设置状态 setState 替换状态 replaceState 设置属性 setProps 替换属性 replaceProps 强制更新 fo
  • Qt5.15.2安装

    解释一下 Qt 的版本号 比如 5 15 2 是完整的 Qt 版本号 第一个数字 5 是大版本号 major 第二个数字 15 是小版本号 minor 第三个数字 2 是补丁号 patch 只要前面两个数字相同 Qt 的特性就是一致的 最后
  • Jenkins (二)

    Jenkins 二 使用pipeline script 简单编译 发布war工程到远程tomcat中 配置所需 下载 apache maven 3 9 3 tar gz 解压 apache maven 3 9 3 bin tar gz 拷贝
  • XP 和 win10 系统 bios配制

    因搞嵌入式 家里有好多老式MCU 用到XP系统相关的编译器和相关的调试工具 专门买了台X230 配两个硬盘XP和win10 发现BIOS配置不一样 在这里记录一下 1 config 下面的 serial ATA 系统 serial ATA
  • 工作流选型

    对比 Activiti Flowable
  • 什么是护网(HVV)_需要什么技能?

    HVV介绍 1 什么是护网 护网的定义是以国家组织组织事业单位 国企单位 名企单位等开展攻防两方的网络安全演习 进攻方一个月内采取不限方式对防守方展开进攻 不管任何手段只要攻破防守方的网络并且留下标记即成功 直接冲到防守方的办公大楼 然后物
  • spring-boot 实现定时任务@Scheduled

    Scheduled 只适合处理简单的计划任务 不能处理分布式计划任务 优势 是spring框架提供的计划任务 开发简单 执行效率比较高 且在计划任务数量太多的时候 可能出现阻塞 崩溃 延迟启动等问题 启动类中加入 EnableSchedul