@Scheduled注解简介

news2024/12/25 9:05:07

一、注解介绍

@Scheduled注解是Spring Boot提供的用于定时任务控制的注解,主要用于控制任务在某个指定时间执行,或者每隔一段时间执行。

二、源码

package org.springframework.scheduling.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;
import org.springframework.aot.hint.annotation.Reflective;

@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Schedules.class)
@Reflective
public @interface Scheduled {
    String CRON_DISABLED = "-";

    String cron() default "";

    String zone() default "";

    long fixedDelay() default -1L;

    String fixedDelayString() default "";

    long fixedRate() default -1L;

    String fixedRateString() default "";

    long initialDelay() default -1L;

    String initialDelayString() default "";

    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;

    String scheduler() default "";
}

三、Spring接入说明

@Scheduled需要配合@EnableScheduling使用。使用时,将@Scheduled注解放在待定时的方法名上方,将 @EnableScheduling放在项目主启动类类名上方

@Scheduled主要有三种配置执行时间的方式:cron、fixedRate和fixedDelay。

四、主要参数说明

参数说明
cron任务执行的cron表达式
zonecron表达时解析使用的时区,默认为服务器的本地时区。使用java.util.TimeZone#getTimeZone(String)方法解析 GMT-8:00
fixedRate固定速率。上一次任务执行开始到下一次执行开始的间隔时间固定,单位为ms。若在调度任务执行时,上一次任务还未执行完毕,会加入worker队列,等待上一次执行完成后,马上执行下一次任务
fixedRateString与fixedRate一致,只是间隔时间使用java.time.Duration#parse解析
fixedDelay固定延迟。上一次任务执行结束到下一次执行开始的间隔时间固定,单位为ms。
fixedDelayString与fixedDelay一致,只是间隔时间使用java.time.Duration#parse解析
initialDelay首次延迟多长时间后执行,单位ms。之后按照fixedRate、fixedRateString、fixedDelay、fixedDelayString指定的规则执行,需要指定其中一个规则。注意:不能和cron一起使用
initialDelayString与initialDelay 一致,只是间隔时间使用java.time.Duration#parse解析
timeUnit时间单位。默认为毫秒。

五、Cron表达式

参考 Cron表达式详解

在这里插入图片描述

cron表达式*和?的区别

  • 星号(* ):
    在cron表达式中,星号(*)表示该字段的每一个可能值。
    例如,在分钟字段中使用*表示“每分钟”。
    在其他字段中,*也表示接受所有可能的值。、

  • 问号(?):
    问号(?)只在日期和星期字段中使用。
    当在日期和星期字段中同时出现*时,?用于屏蔽其中一个字段,以确保任务只在满足另一个字段条件的时间触发。
    ?通常表示“无意义的值”,相当于一个占位符。
    例如,如果日期和星期字段都设置为1,那么任务将在每月的第一天触发。但是,如果这两个字段同时设置为1,而实际上每个月的第一天可能不总是星期一,这时可以使用?来屏蔽其中一个字段,确保任务只在满足特定条件的时间触发。例如,1 * * * * ?表示每天的整点触发任务,而1 ? * * * *表示每月第一天的整点触发任务。12

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

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

相关文章

第十五届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组(基础题)

试题 C: 好数 时间限制 : 1.0s 内存限制: 256.0MB 本题总分:10 分 【问题描述】 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位 )上 的数字是奇数,偶数位(十位、千位、十万位 &…

C++(类和对象---下)

目录 初始化列表构造函数?拷贝构造?浅谈explicit关键字友元 内部类static成员总结 初始化列表 引入初始化列表:简化代码,提高效率 在编程中,初始化列表是一种用于在创建对象时初始化成员变量的快捷方式。通过初始化列…

python爬虫原理和编程实战:爬取CSDN博主的账号信息

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

时间同步服务项目练习

一.配置server主机要求如下: 1.server主机的主机名称为 ntp_server.example.com 2.server主机的IP为: 172.25.254.100 3.server主机的时间为1984-11-11 11:11:11 4.配置server主机的时间同步服务要求可以被所有人使用 二.设定cli…

RocketMQ 10 面试题FAQ

RocketMQ 面试FAQ 说说你们公司线上生产环境用的是什么消息中间件? 为什么要使用MQ? 因为项目比较大,做了分布式系统,所有远程服务调用请求都是同步执行经常出问题,所以引入了mq 解耦 系统耦合度降低,没有强依赖…

Java | Leetcode Java题解之第31题下一个排列

题目: 题解: class Solution {public void nextPermutation(int[] nums) {int i nums.length - 2;while (i > 0 && nums[i] > nums[i 1]) {i--;}if (i > 0) {int j nums.length - 1;while (j > 0 && nums[i] > nums[…

构建数据平台架构指导原则与平台核心组件说明

文章目录 前言什么是数据架构?数据架构如何帮助构建数据平台?数据平台核心组件数据源系统数据加载数据存储数据处理和转换提供使用数据的方式公共服务 前言 湖仓一体是最近几年非常流行的现代大数据架构,目前它已经成为设计数据平台架构的首…

JavaSE-13笔记【集合2(+2024新)】

文章目录 3.Map3.1 Map继承结构3.2 Map接口的常用方法3.3 遍历Map3.4 HashMap集合3.4.1 HashMap集合key的特点3.4.2 HashMap集合的key存储自定义类型3.4.3 哈希表3.4.3.1 哈希表的介绍3.4.3.2 哈希表的存储原理 3.4.4 存放在HashMap和HashSet集合key部分的元素必须同时重写hash…

postman汉化

一、postman历史版本下载:Postman 10.24.16 Download for Windows / Old Versions / FileHorse.comhttps://www.filehorse.com/download-postman/old-versions/ 二、汉化包下载: Releases hlmd/Postman-cn GitHubPostman汉化中文版. Contribute to h…

LeetCode———144—— 二叉树的前序遍历

目录 ​编辑 1.题目 2.解答 1.首先计算二叉树的节点个数: 2.以先序遍历(Preorder Traversal)的方式遍历一个二叉树,并将遍历到的节点的值存储在一个整数数组中 3.最终代码 1.题目 . - 力扣(LeetCode) 给…

浮点数的存储方式、bf16和fp16的区别

目录 1. 小数的二进制转换2. 浮点数的二进制转换3. 浮点数的存储3.1 以fp32为例3.2 规约形式与非规约形式 4. 各种类型的浮点数5. BF16和FP16的区别Ref 1. 小数的二进制转换 十进制小数转换成二进制小数采用「乘2取整,顺序排列」法。具体做法是:用 2 2…

如何协调数据集成和数据质量?

想象一下用腐烂的木头制作的一件漂亮的家具或用劣质面料制成的高级时尚衬衫。材料的质量影响最终产品。那么,为什么数据洞察(贵公司庞大的数据管理工作的主要产品)会有所不同呢? 无论您的数据管理生态系统有多强大,或…

《自动机理论、语言和计算导论》阅读笔记:p139-p171

《自动机理论、语言和计算导论》学习第 7 天,p139-p171总结,总计 33 页。 一、技术总结 1.reversal p139, The reversal of a string a1a2…an is the string written backwards, that is anan-1…a1. 2.homomorphism A string homomorphism is a f…

点云语义分割:使用Cylinder3D训练SemanticKITTI数据集

点云语义分割:使用Cylinder3D训练SemanticKITTI数据集 一、环境二、数据准备3、训练4、测试5、可视化 一、环境 系统:Ubuntu18 Pytorch:1.5.0 GPU:Tesla V100 cuda:10.2 代码: Cylinder3D 二、数据准备 下载semanticKITTI数据集…

32.5k star!发现一个新的 API 调试工具!postman 要被替换了【文末有项目源码】

在软件开发过程中,API(应用程序接口)扮演着至关重要的角色。为了确保 API 的可靠性和性能,开发人员需要一种高效的方式来测试和调试它们。这方面的工具,大家经常用到的应该就是 postman 了。不过,今天想要给…

钡铼IOy系列模块深挖工业场景需求提供丰富多样的I/O解决方案

钡铼IOy系列模块以其灵活性和多样性,在工业场景中提供了丰富多样的I/O解决方案,满足了不同行业、不同应用场景的需求。以下是一些常见的工业场景需求及钡铼IOy系列模块提供的解决方案: 1. 工厂自动化 需求:工厂自动化需要对生产线…

03-JAVA设计模式-迭代器模式

迭代器模式 什么是迭代器模式 迭代器模式(demo1.Iterator Pattern)是Java中一种常用的设计模式,它提供了一种顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示的方法。迭代器模式将遍历逻辑从聚合对象中分离出来…

斯坦福大学2024年人工智能发展和前景全面分析报告

2024 年指数是斯坦福大学迄今为止最全面的指数,恰逢人工智能对社会的影响力达到前所未有的重要时刻。今年,斯坦福大学扩大了研究范围,更广泛地涵盖人工智能的技术进步、公众对该技术的看法以及围绕其发展的地缘政治动态等基本趋势。 完整详细…

C++基本输入输出

C 中的输入和输出( I/O )主要是通过标准库中的输入输出流来实现的。最常用的是 iostream 1. 库,它提供了用于输入和输出的基本流类,包括 cin 、 cout 、 cerr 和 clog 。 1.标准输出流 ( cout ) cout 代表标准输出流&a…

Java 基于微信小程序的医院预约挂号小程序(V3)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…