java后端--定时任务

定时任务

    • 一、简述
    • 二、注解
      • 1.@Scheduled
        • 属性:
      • 2.@EnableScheduling
    • 三、案例

一、简述

在java后端开发中,经常遇到一些任务需要频繁发生,每次都人工调用太麻烦,这时就用到了定时任务进行自动化调用,大大便利了程序员的开发工作并可以实现某种场景下的一些功能。

二、注解

1.@Scheduled

是Spring框架中的,可以讲一个方法标记为定时任务,被标注的方法必须是无返回值类型(void),且方法不能有参数。

属性:

①fixedRate:时间间隔,单位为毫秒。无论任务执行时长如何,下一次任务都会在上一次任务开始后的指定时间间隔后启动。

②fixedDelay:任务完成后,下一次任务开始前的延迟时间,单位为毫秒。

③initialDelay:指定任务首次执行前的延迟时间,单位为毫秒。

④cron:使用Cron表达式指定任务的执行时间
由6或7个时间字段构成,空格分隔
秒 分 时 日 月 周 【年】

*:表示所有值,例如在“分” 位置用 ,表示每分钟都执行
?:表示不指定值,只能在 “日” “月” 字段
-:表示范围,10-12表示在十点到十二点
,:表示与的关系,“1,2,3”表示这三个时间点都执行
/:表示间隔时间,例如0/15在 “分” 位置表示从0开始,每隔十五分钟执行一次

例子:
0 30 9 * * MON-FRI:周一至周五的上午 9:30 执行。
0 0 12 1/5 * ?:每月的第 1 天开始,每 5 天的中午 12 点执行。

2.@EnableScheduling

属于Spring框架,用于启动Spring的定时任务功能。只能在配置类上使用,自动扫描带有@Scheduled注解的方法,注册为定时任务

一般用在Application.java 启动类上

三、案例

@Component
public class ScheduledTasks {// 每隔 5 秒执行一次@Scheduled(fixedRate = 5000)public void fixedRateTask() {System.out.println("Fixed rate task executed at " + System.currentTimeMillis());}// 任务执行完成后,延迟 3 秒再执行下一次@Scheduled(fixedDelay = 3000)public void fixedDelayTask() {System.out.println("Fixed delay task executed at " + System.currentTimeMillis());}// 首次延迟 2 秒后开始执行,之后每隔 4 秒执行一次@Scheduled(initialDelay = 2000, fixedRate = 4000)public void initialDelayTask() {System.out.println("Initial delay task executed at " + System.currentTimeMillis());}// 每天凌晨 2 点执行@Scheduled(cron = "0 0 2 * * ?")public void cronTask() {System.out.println("Cron task executed at " + System.currentTimeMillis());}
}

特定场景下:
如果用户的注册到期了,五分钟后给他自动禁用

@Slf4j
@Component
public class UserDisable {@Resourceprivate UserMapper userMapper;@Resourceprivate UserService userService;@Scheduled(cron = "0 0 7 * * ?")   //每日七点执行一次public void disableUsers(){try {Calendar calendar = Calendar.getInstance();calendar.add(Calendar.DAY_OF_YEAR, 0);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, -5);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date sDaysAgo = calendar.getTime();//查询有哪些用户到期List<Long> idList = userMapper.selectByEndTime(sDaysAgo);//禁用操作for (Long id : idList) {userService.disabled(id);}}catch (Exception e){e.getMessage();}}
}

别忘了在启动类上加@EnableScheduling进行启用定时任务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM垃圾回收面试题及原理

1. 对象什么时候可以被垃圾器回收 如果一个或多个对象没有任何的引用指向它了&#xff0c;那么这个对象现在就是垃圾&#xff0c;如果定位了垃圾&#xff0c;则有可能会被垃圾回收器回收 如果要定位什么是垃圾&#xff0c;有两种方式来确定 引用计数法可达性分析算法 1.1 …

《Mycat核心技术》第19章:基于MySQL实现读写分离

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 星球项目地址&#xff1a;https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…

【安卓逆向】安卓病毒介绍及其简单案例分析

目录 引言 一、Android 病毒介绍及分析方法 1.1 Android 病毒预览 1.2 Android 病毒分析必备知识 1.3 Android 病毒的常见类型及恶意行为 1.3.1 常见病毒类型 1.3.2 常见病毒行为 1.4 病毒激活条件 1.5 Android 病毒的传播方式 1.6 Android 病毒分析的一般方法 二…

基于LabVIEW的脚本化子VI动态生成

该示例展示了一种利用LabVIEW VI脚本&#xff08;VI Scripting&#xff09;技术&#xff0c;通过程序化方式动态生成并替换子VI的解决方案。核心逻辑为&#xff1a;基于预定义的模板VI&#xff0c;根据用户选择的数学操作&#xff08;加法或乘法&#xff09;&#xff0c;自动生…

机器学习之超参数优化(Hyperparameter Optimization)

超参数优化(Hyperparameter Optimization) 1. 简介 在机器学习和深度学习中,超参数(Hyperparameters) 是在训练之前需要设定的参数,例如学习率(learning rate)、批量大小(batch size)、神经网络的层数等。与训练过程中自动学习的模型参数(如权重和偏置)不同,超参…

Manus 演示案例:谷歌公司运营模拟器游戏体验

一、项目背景与愿景 在科技行业蓬勃发展的当下&#xff0c;谷歌作为行业巨头&#xff0c;其成长历程充满了无数值得深入探究的决策智慧。这些决策不仅塑造了谷歌的辉煌&#xff0c;也为全球企业的发展提供了宝贵的借鉴。本项目旨在打造一款以谷歌公司发展为蓝本的运营模拟器游戏…

es-索引详解

在 Elasticsearch 中&#xff0c;**索引&#xff08;Index&#xff09;**是核心概念之一&#xff0c;类似于关系型数据库中的“表”。索引用于存储、组织和检索文档&#xff08;Document&#xff09;。以下是关于 Elasticsearch 索引的详细解析&#xff1a; 1. 索引的基本概念 …

基于策略模式的智能提示语生成器设计与实现——以Tkinter GUI开发为例

基于策略模式的智能提示语生成器设计与实现——以Tkinter GUI开发为例 一、引言&#xff1a;智能化时代的提示工程工具 在人工智能技术广泛应用的时代背景下&#xff0c;如何与AI模型进行有效交互已成为关键技能。本文介绍的"AI任务需求与提示语策略生成器"正是基于…

01 | Go 项目开发极速入门课介绍

提示&#xff1a; 所有体系课见专栏&#xff1a;Go 项目开发极速入门实战课。 你好&#xff0c;欢迎学习本课程。本课程是一个 Go 项目开发极速入门课程。旨在帮助刚学习完 Go 基础语法的 Go 开发者&#xff0c;快速掌握如何开发一个功能相对全面的 Go 项目。 根据课程设计目标…

密闭空间可燃气体监测终端:守护城市命脉,智驭燃气安全!

近年来&#xff0c;陕西省高度重视燃气安全&#xff0c;出台了一系列政策文件&#xff0c;旨在全面加强城镇燃气安全监管&#xff0c;防范化解重大安全风险。2023年&#xff0c;陕西省安委会印发《全省城镇燃气安全专项整治工作方案》&#xff0c;明确要求聚焦燃气经营、输送配…

大白话react第十八章React 与 WebGL 项目的高级拓展与优化

大白话react第十八章React 与 WebGL 项目的高级拓展与优化 1. 实现 3D 模型的导入与动画 在之前的基础上&#xff0c;我们可以导入更复杂的 3D 模型&#xff0c;并且让这些模型动起来&#xff0c;就像在游戏里看到的角色和场景一样。这里我们使用 GLTF 格式的模型&#xff0c…

有关Java中的多线程

学习目标 ● 掌握线程相关概念 ● 掌握线程的基本使用 ● 掌握线程池的使用 ● 了解解决线程安全方式 1.为什么要学习线程? ● 从1946年2月14日世界上第一台计算机在美国宾夕法尼亚大学诞生到今天&#xff0c;计算和处理的模式早已从单用户单任务的串行模式发展到了多用户多…

Spring Boot集成EasyExcel

1. 初始化Spring Boot项目 首先&#xff0c;使用Spring Initializr&#xff08;https://start.spring.io/&#xff09;生成一个基本的Spring Boot项目。选择以下依赖项&#xff1a; Spring WebLombok (用于减少样板代码)SLF4J (用于日志记录) 2. 添加依赖 在你的pom.xml文件…

(2025|ICLR|厦大华为,LoSA,基于表示互信息的动态层级稀疏率,基于重构误差的秩分配)LLM 的动态低秩稀疏自适应

Dynamic Low-Rank Sparse Adaptation for Large Language Models 目录 1. 引言 1.1 关键词 2. 方法 2.1 预备知识 2.2 层级稀疏率确定 2.3 稀疏感知的秩分配 2.4 动态稀疏与适配 3. 实验 3.1 实验设置 3.2 语言建模 3.3 零样本任务 3.4 N:M 稀疏性 3.5 消融实验 …

p5.js:sound(音乐)可视化,动画显示音频高低变化

本文通过4个案例介绍了使用 p5.js 进行音乐可视化的实践&#xff0c;包括将音频振幅转化为图形、生成波形图。 承上一篇&#xff1a;vite&#xff1a;初学 p5.js demo 画圆圈 cd p5-demo copy .\node_modules\p5\lib\p5.min.js . copy .\node_modules\p5\lib\addons\p5.soun…

linux 进程和计划管理

查看进程 在Linux系统中&#xff0c;有多个命令可以用来查看进程 以下是一些常用的命令&#xff1a; ps命令&#xff1a;用于查看当前系统中的进程状态。 基本用法&#xff1a;ps -ef&#xff0c;该命令会以完整格式显示所有进程的详细信息&#xff0c;包括用户ID、进程ID、父…

DeepSeek 多模态大模型 Janus-Pro 本地部署教程

下载模型仓库 git clone https://github.com/deepseek-ai/Janus.git 国内下载仓库失败时&#xff0c;可以使用以下代理&#xff1a; git clone https://github.moeyy.xyz/https://github.com/deepseek-ai/Janus.git 准备 Conda 3.12 虚拟环境 conda create --name deepseek7B p…

Qt开源控件库(qt-material-widgets)的编译及使用

项目简介 qt-material-widgets是一个基于 Qt 小部件的 Material Design 规范实现。 项目地址 项目地址&#xff1a;qt-material-widgets 本地构建环境 Win11 家庭中文版 VS2019 Qt5.15.2 (MSVC2019) 本地构建流程 克隆后的目录结构如图&#xff1a; 直接使用Qt Crea…

ARM 嵌入式处理器内核与架构深度剖析(2): ARM 处理器架构剖析

目录 一、ARM处理器架构剖析 1.1. 指令集架构&#xff08;ISA&#xff09; 1.2. 寄存器集 1.3. 存储模型 1.4. 异常模型 二、架构设计精要 2.1 处理器模式与特权分级 2.2 寄存器银行化技术 2.3 指令集演化 三、微架构核心技术 3.1 流水线创新 3.2 内存子系统 3.3 …

Flutter 按钮组件 TextButton 详解

目录 1. 引言 2. TextButton 的基本用法 3. 主要属性 4. 自定义按钮样式 4.1 修改文本颜色 4.2 添加背景色 4.3 修改按钮形状和边距 4.4 样式定制 5. 高级应用技巧 5.1 图标文本组合 5.2 主题统一配置 5.3 动态交互 6. 性能优化与注意事项 6.1 点击区域优化 6.…