当前位置: 首页 > news >正文

Spring boot定时任务

目录

    • 前言
    • 一、使用 @Scheduled 注解
    • 二、使用 ScheduledExecutorService
    • 三、使用 Spring 的 TaskScheduler
    • 四、使用第三方调度框架

前言

在 Spring Boot 中,有多种方法来编写定时任务,以执行周期性或延迟执行的任务。下面是几种常见的方式

一、使用 @Scheduled 注解

Spring Boot 提供了 @Scheduled 注解,可以将该注解应用在方法上,以指定方法的执行时间,这也是最简单的开启定时任务的方法。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class ScheduledTasks {@Scheduled(fixedRate = 10000) // 每10秒执行一次public void doTask() {// 你的任务逻辑}
}

这种方式非常简单,适用于简单的定时任务需求,下面是 @Scheduled 注解的常用参数:

fixedRate:以固定的速率执行任务。例如,@Scheduled(fixedRate = 10000) 表示每隔 10 秒执行一次任务。

fixedDelay:以固定的延迟执行任务。例如,@Scheduled(fixedDelay = 5000) 表示在上一个任务完成后延迟 5 秒再执行下一个任务。

initialDelay:在应用程序启动后,首次执行任务的延迟时间。例如,@Scheduled(initialDelay = 3000, fixedRate = 10000) 表示在应用启动后等待 3 秒,然后每隔 10 秒执行一次任务。

cron:使用 Cron 表达式来定义任务的执行时间。Cron 表达式非常灵活,可以指定精确的执行时间和日期。例如,@Scheduled(cron = “0 * * * * ?”) 表示每小时执行一次任务。

cron表达式语法:

[秒(0-59)] [分(0-59)] [时(0-23)] [日(1-31)] [月(1-12,或英文缩写))] [周(0-7,或英文缩写)]

Cron 表达式还支持一些特殊字符和符号,用于更复杂的时间规则:

*(星号): 表示匹配该字段的任意值,例如,* 在秒钟字段中表示每秒都触发。
,(逗号): 表示一个列表,可以包含多个数值,例如,1,3,5 在分钟字段中表示每小时的第1、3、5分钟触发。
-(连字符): 表示一个范围,例如,1-5 在分钟字段中表示每小时的第1到5分钟触发。
/(斜杠): 表示步长,例如,*/5 在分钟字段中表示每隔5分钟触发一次。
?(问号): 通常用在日期和星期几字段,表示不指定值。
L(大写字母L): 通常用在日期和星期几字段,表示最后一天或最后一周。
W(大写字母W): 通常用在日期字段,表示工作日(周一到周五)最接近指定日期,但可能不是准确的日期。
#(井号): 通常用在星期几字段,表示一个月中的第几个星期几,例如,6#3 表示每月的第三个星期五。

Cron 表达式含义
* * * * * ?每秒钟执行一次任务
0 * * * * ?每分钟的第0秒执行任务
0 0 * * * ?每小时的第0分0秒执行任务
0 0 12 * * ?每天中午(12:00)执行任务
0 0 12 * * MON每周一中午(12:00)执行任务
0 0 12 1 * ?每月1日中午(12:00)执行任务
0 0 12 1 1 ?每年1月1日中午(12:00)执行任务
0 0 * * 1-5 ?工作日(周一至周五)的每小时执行任务
0 0 0 * * ?每天凌晨(00:00)执行任务
0 0 * * SUN每周日的每小时执行任务
0 0 8-17 * * ?每天上午8点到下午5点的每小时执行任务
0 0/15 * * * ?每15分钟执行一次任务

二、使用 ScheduledExecutorService

Java 自带了 ScheduledExecutorService 接口,它允许创建并执行定时任务。可以使用 ScheduledThreadPoolExecutor 类来创建一个线程池,以执行周期性任务。这种方式更加灵活,可以处理复杂的任务。

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class ScheduledTasks {private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);public void scheduleTask() {scheduler.scheduleAtFixedRate(this::doTask, 0, 10, TimeUnit.SECONDS);}public void doTask() {// 你的任务逻辑}
}

这种方式适用于需要更多控制的任务,如动态任务创建、取消等。

三、使用 Spring 的 TaskScheduler

Spring 提供了 TaskScheduler 接口,它允许你执行定时任务。你可以使用 Spring 提供的实现类,如 ThreadPoolTaskScheduler。

import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;@Component
public class ScheduledTasks {private final ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();public ScheduledTasks() {scheduler.initialize();scheduler.schedule(this::doTask, new CronTrigger("0/10 * * * * ?")); // 每10秒执行一次}public void doTask() {// 你的任务逻辑}
}

这种方式适用于需要更高级的任务调度,如使用 Cron 表达式等。

四、使用第三方调度框架

除了内置的方式,你还可以选择使用第三方调度框架,如 Quartz Scheduler。Quartz 提供了高度灵活的调度功能,允许你配置复杂的任务计划和调度策略。

选择哪种方法取决于你的具体需求。对于简单的定时任务,@Scheduled 注解通常足够,但如果需要更高级的控制和灵活性,可能需要考虑其他方式。

相关文章:

Spring boot定时任务

目录 前言一、使用 Scheduled 注解二、使用 ScheduledExecutorService三、使用 Spring 的 TaskScheduler四、使用第三方调度框架 前言 在 Spring Boot 中,有多种方法来编写定时任务,以执行周期性或延迟执行的任务。下面是几种常见的方式 一、使用 Sche…...

Glide原理

本文基于Carson整理 1.简介 相比其他几种图片加载框架,Glide性能最好。这得益于其高效的图片缓存策略 其还有多样化的媒体格式加载:如GIF、Video,对于商城首页需展示丰富样式、信息的页面需求来说,也是必不可少的。 2.加载原理…...

wps表格按分隔符拆分单元格

有数据如下;看选中区域,一个单元格中有一个v,空格,然后有三个数值,以空格分开;点击菜单中的数据-分列; 弹出分列向导;选择 分隔符号; 选择分隔符为空格;出现预…...

【SEC 学习】Vim 的基本使用

一、Vim 编辑器安装 yum install -y vim二、Vim 三种模式 命令模式 编辑模式 末行模式 三、三种模式之间的转换 1. 命令模式 -> 编辑模式 快捷键含义i从光标处插入I从光标所在行首插入a从光标后插入A从光标所在行末插入o从光标下一行插入O从光标上一行插入 2. 命令模式 …...

Linux中shell脚本练习

目录 1.猜数字 2.批量创建用户 3.监控网卡Receive Transmit 数据的变化 4.部署Linux 5.系统性能检测脚本 6.分区脚本 7.数据库脚本 1.猜数字 随机数的生成 使用环境变量RANDOM,范围是0~32767 编写guest.sh,实现以下功能&#xff1…...

AS/400简介

AS400 AS400 简介AS/400操作系统演示 AS400 简介 在 AS400 中,AS代表“应用系统”。它是多用户、多任务和非常安全的系统,因此用于需要同时存储和处理敏感数据的行业。它最适合中级行业,因此用于制药行业、银行、商场、医院管理、制造业、分销…...

FreeRTOS 中断管理介绍和实操

目录 中断定义 中断优先级 相关注意 中断相关函数 1.队列 2.信号量 3.事件标志组 4.任务通知 5.软件定时器 中断管理实操 中断定义 中断是指在程序执行的过程中,突然发生了某种事件,需要立即停止当前正在执行的程序,并转而处理这个…...

性能测试 —— Jmeter 常用三种定时器!

1、同步定时器 位置:HTTP请求->定时器->Synchronizing Timer 当需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用户阻塞线程,知道线程数达到预先配置的数值,才开始执行…...

ROS自学笔记十七:Arbotix

ArbotiX 是一个基于 ROS(Robot Operating System)的机器人控制系统,它旨在为小型机器人提供硬件控制和传感器接口,以便于机器人的运动和感知。以下是有关 ROS 中 ArbotiX 的简介和安装步骤: ArbotiX 简介 ArbotiX 主…...

Mac电脑窗口管理Magnet中文 for mac

Magnet是一款Mac窗口管理工具,它可以帮助用户轻松管理打开的窗口,提高多任务处理效率。以下是Magnet的一些主要特点和功能: 分屏模式支持:Magnet支持多种分屏模式,包括左/右/顶部/底部 1/2 分屏、左/中/右 1/3 分屏、…...

Centos7 部署 Stable Diffusion

参考:https://www.jianshu.com/p/ff81bb76158a 遇到的问题: 1、git clone 比较慢 解决办法:设置代理 https://blog.csdn.net/dszgf5717/article/details/130735389 2、pip install 比较慢 解决办法:更换源或设置代理 https:/…...

【Python】一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格

题目要求:一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格 例:(为了方便观看,以 ▢ 代替空格) 输入:123▢▢abc▢▢▢python 输出:123▢abc▢python 参考…...

嵌入式项目电灯

1、原理,电灯有个正负极,当正确接入电源正负极就能点亮(如正极5v,负极0v),单两边同时接入正极,就不会亮(两端都是5v),所以通过控制电平,来实现控制led等的亮暗 cpu通过给…...

[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]

文本编辑器概要 在Ubuntu系统下,有许多文本编辑器可供选择,每个编辑器都有其独特的特性和用途。以下是一些常见的文本编辑器: Gedit: 这是Ubuntu默认的文本编辑器,它简单易用,适合基本的文本编辑任务。 安…...

C#WinformListView实现缺陷图片浏览器

C#&Winform&ListView实现缺陷图片浏览器 功能需求图像浏览行间距调整悬浮提示 功能需求 机器视觉检测系统中特别是缺陷检测系统,通常需要进行对已经检出的缺陷图片进行浏览查阅。主要是通过条件筛选查询出所需要的数据,进行分页再展示到界面中。…...

C- qsort()

qsort() 是 C 语言标准库中的一个函数,用于进行数组的排序。其名字“qsort”代表“快速排序”(Quick Sort),这是因为它通常使用快速排序算法进行排序,但具体实现可能因库而异。 以下是 qsort() 的详细介绍&#xff1a…...

【Apache Flink】基于时间和窗口的算子-配置时间特性

文章目录 前言配置时间特性将时间特性设置为事件时间时间戳分配器周期性水位线分配器创建一个实现AssignerWithPeriodicWatermarks接口的类,目的是为了周期性生成watermark 定点水位线分配器示例 参考文档 前言 Apache Flink 它提供了多种类型的时间和窗口概念&…...

数组的优点和缺点

数组的优点和缺点: 优点: 随机访问:数组支持常量时间的随机访问,即通过索引可以直接访问元素。这使得数组在查找特定元素时非常高效。内存连续性:数组的元素在内存中是连续存储的,这可以减少缓存未命中的…...

接口返回响应,统一封装(ResponseBodyAdvice + Result)(SpringBoot)

需求 接口的返回响应&#xff0c;封装成统一的数据格式&#xff0c;再返回给前端。 依赖 对于SpringBoot项目&#xff0c;接口层基于 SpringWeb&#xff0c;也就是 SpringMVC。 <dependency><groupId>org.springframework.boot</groupId><artifactId&g…...

苹果cms模板MXone V10.7魔改版源码 全开源

苹果cms模板MXone V10.7魔改版源码 全开源 苹果cms模板MXone魔改版短视大气海报样式 安装模板教程说明&#xff1a; 1、将模板压缩包上传到苹果CMS程序/template下解压 2、网站模板选择mxone 模板目录填写html 3、网站模板选择好之后一定要先访问前台&#xff0c;然后再进…...

心脏数字孪生:计算建模与机器学习融合重塑精准医疗

1. 项目概述&#xff1a;当计算心脏遇见数据智能在心血管医学的前沿&#xff0c;一场静默的革命正在进行。我们不再仅仅依赖传统的临床试验和群体统计数据来理解疾病、测试药物或规划手术。取而代之的&#xff0c;是一个融合了计算物理学、生物学和人工智能的崭新范式&#xff…...

国防采购如何吸引商业AI创新:OTA协议与敏捷合作模式解析

1. 项目概述&#xff1a;当国防采购遇上商业AI创新在过去的十几年里&#xff0c;我接触过不少政府与科技企业间的合作项目&#xff0c;从早期的云计算服务到后来的大数据分析平台。但最近几年&#xff0c;一个趋势愈发明显&#xff1a;以人工智能为代表的颠覆性技术&#xff0c…...

线性化加性模型与子尺度混合:实现概率空间直接可解释的机器学习

1. 项目概述与核心痛点 在金融风控、医疗诊断这些对决策过程要求“看得见、摸得着”的领域&#xff0c;我们这些从业者每天都在和模型的可解释性较劲。你肯定遇到过这种情况&#xff1a;业务方拿着一个逻辑回归模型的风险评分问你&#xff1a;“这个客户的‘历史逾期次数’这个…...

别再只用MaxPool了!试试在YOLOv9里集成Haar小波下采样(HWD),实测涨点还省显存

突破传统下采样瓶颈&#xff1a;YOLOv9集成Haar小波下采样的实战指南当你在训练YOLOv9模型时&#xff0c;是否遇到过这样的困境——为了提升检测精度而增加模型复杂度&#xff0c;却发现显存迅速耗尽&#xff1b;或是采用激进的下采样策略后&#xff0c;小目标检测性能明显下降…...

【企业级AI Agent操作安全白皮书】:基于ISO/IEC 27001与NIST AI RMF的6类操作审计红线

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI Agent自主操作软件的定义与安全治理边界 AI Agent自主操作软件是指具备感知环境、规划决策、调用工具&#xff08;如API、CLI、GUI自动化接口&#xff09;并闭环执行任务能力的智能体系统。其核心特征在于…...

Claude API文档不是说明书,而是契约:用Swagger UI+Postman Collection+TypeScript SDK三件套构建零歧义协作协议

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Claude API文档不是说明书&#xff0c;而是契约 Claude API 文档的本质并非操作指南或功能速查手册&#xff0c;而是一份具有技术约束力的**双向契约**——它明确定义了客户端与 Anthropic 服务之间在请求结构…...

企业部署 AI Agent Harness Engineering 的第一道坎不是技术,是信任

企业部署 AI Agent Harness Engineering 的第一道坎不是技术,是信任 引言 各位正在关注 AI Agent 落地企业生产环境的技术负责人、CTO、架构师、开发者们: 去年我在国内某头部 SaaS 公司做内部 Hackathon 的评委时,看到了一支由 3 个应届毕业的计算机科学博士和 2 个资深后…...

2026年论文党必备:盘点2026年倾心之选的的降AIGC网站

轻松降低论文AI率在2026年已不再是天方夜谭。以下是2026年最炸裂、实测效果显著的降AIGC网站神器&#xff0c;覆盖AI痕迹消除、文本改写润色、降重优化、学术合规检测四大核心场景&#xff0c;帮你稳妥搞定毕业论文。 一、全流程王者&#xff1a;一站式搞定论文全链路 这类工具…...

2026年亲测AI写作辅助软件指南(高效定稿版)

为解决学术写作中效率与合规两大核心痛点&#xff0c;本文精选8款高适配性AI论文写作工具&#xff08;按综合优先级排序&#xff09;&#xff0c;围绕中文学术规范适配、真实参考文献生成、格式标准化、高性价比四大核心维度筛选&#xff0c;同时配套分场景精准选型方案与学术合…...

索尼360 Reality Audio发展受阻,苹果携手杜比让空间音频成主流

索尼的行动与失察索尼在市场创新方面思路正确&#xff0c;利用个人音频业务融入技术&#xff0c;争取平台采用&#xff0c;吸引音乐家录制专辑&#xff0c;授权音频制造商。但没料到自己不会成为沉浸式音频未来的关键参与者&#xff0c;失误只因不是苹果。空间音频如何定义2010…...