定时任务。

news2024/10/8 17:37:44

引入

1.启动类上加上注解

2.新建一个定时任务的管理类,交给Spring管理

案例

案例1:fixedRate

//上次任务开始到下次任务开始的时间间隔为5秒
//每隔5秒执行一次,不需要等上个任务执行完
@Scheduled(fixedRate = 5000)
public void mask01() throws InterruptedException {
log.info("mask01任务开始:{}", printTime());
Thread.sleep(2000);
log.info("mask01任务结束:{}", printTime());
}


案例2:fixedDelay

//上次任务结束到下次任务开始的时间间隔为5秒
//每隔5秒执行一次,需要等上个任务执行完
@Scheduled(fixedDelay = 5000)
public void mask02() throws InterruptedException {
log.info("mask02任务开始:{}", printTime());
Thread.sleep(2000);
log.info("mask02任务结束:{}", printTime());
}


案例3:initialDelay

//刚开始延迟10秒,然后开始执行任务,之后的每个任务完成后延迟5秒执行
@Scheduled(initialDelay = 10000, fixedDelay = 5000)
public void mask03() throws InterruptedException {
log.info("mask03任务开始:{}", printTime());
Thread.sleep(2000);
log.info("mask03任务结束:{}", printTime());
}


案例4:cron表达式(表达式的书写了解即可,有需求问ai)


Cron表达式是一种用于调度任务的时间表达式,广泛应用于各种计划任务、定时任务等场景。下面将对Cron表达式进行详细讲解:

一、Cron表达式的结构

Cron表达式由6或7个字段组成,每个字段代表一个时间元素,字段之间用空格分隔。这些字段按顺序依次为:

  1. 秒(0~59)
  2. 分(0~59)
  3. 时(0~23)
  4. 日(月)(1~31,但要考虑月份的天数)
  5. 月(112,或JANDEC)
  6. 周几(17,1=周日,或SUNSAT)
  7. 年(可选,留空或1970~2099)

注意:在实际应用中,Cron表达式可能只有前6个字段,没有年份字段。

二、Cron表达式的含义

每个字段可以是一个具体的值、一个连续区间、一个间隔时间、一个列表或通配符。具体含义如下:

  1. 具体的值:表示在指定的时间点执行任务。例如,小时字段为12表示在每天的中午12点执行任务。
  2. 连续区间:表示在指定的时间范围内每分钟/每小时/每天等执行任务。例如,分钟字段为5~20表示从5分到20分钟每分钟触发一次。
  3. 间隔时间:表示从起始时间开始,每隔固定时间触发一次。例如,小时字段为8~18/4表示从早上8点开始,每隔4小时触发一次。
  4. 列表:表示在指定的多个时间点执行任务。例如,周几字段为1,3,5表示在每周的周一、周三和周五执行任务。
  5. 通配符(*):表示匹配该字段的任意值。例如,分钟字段为*表示每分钟都会触发事件。

三、Cron表达式的特殊字符和符号

Cron表达式还支持一些特殊字符和符号,用于更灵活地指定任务的执行时间:

  1. 问号(?):只能用于日和周几字段,表示不指定值。因为日和周几字段是互斥的,必须对其中一个设置?以避免冲突。
  2. 斜杠(/):用于指定某个字段的间隔值。例如,分钟字段为*/5表示每隔5分钟触发一次。
  3. 连接符(-):用于指定某个字段的取值范围。例如,小时字段为9~17表示在朝九晚五工作时间内每小时触发一次。
  4. 逗号(,):用于指定某个字段的多个取值。例如,日字段为1,15表示在每月的1日和15日执行任务。
  5. L:表示某个字段的最后一个取值。只能出现在日和周几字段。例如,日字段为L表示在每月的最后一天执行任务。
  6. W:表示离指定日期最近的有效工作日(周一到周五)。只能出现在日字段。例如,日字段为5W表示如果5日是星期六,则将在最近的工作日(星期五)即4日触发;如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。
  7. LW:这两个字符可以连用,表示在某个月最后一个工作日。例如,日字段为LW表示在每月的最后一个工作日执行任务。
  8. #:用于指定某个月份的第几个星期几。只能出现在周几字段。例如,周几字段为5#2表示在每月的第二个周四执行任务。

常见例子

(1)0 0 2 1 * ? 表示在每月的1日的凌晨2点调整任务

(2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业

(3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作

(4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点

(5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时

(6)0 0 12 ? * WED 表示每个星期三中午12点

(7)0 0 12 * * ? 每天中午12点触发

(8)0 15 10 ? * * 每天上午10:15触发

(9)0 15 10 * * ? 每天上午10:15触发

(10)0 15 10 * * ? * 每天上午10:15触发

(11)0 15 10 * * ? 2005 2005年的每天上午10:15触发

(12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发

(13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发

(14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

(15)0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发

(16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发

(17)0 15 10 ? * MON-FRI 周一至周五的上午10:15触发

(18)0 15 10 15 * ? 每月15日上午10:15触发

(19)0 15 10 L * ? 每月最后一日的上午10:15触发

(20)0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发

(21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发

(22)0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发

(23)0/20 * * * * ? 表示每20秒 调整任务


//在每天的22:00:00执行
@Scheduled(cron = "00 00 22 * * * ")
public void mask04() throws InterruptedException {
log.info("mask04任务开始:{}", printTime());
Thread.sleep(2000);
log.info("mask04任务结束:{}", printTime());
}

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

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

相关文章

python:web自动化工具selenium安装和配置(1)

UI自动化测试 UI自动化测试(User Interface Automation Testing)是一种通过编写脚本或使用自动化测试工具,对界面(UI)进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面,自动化执行用户界…

【Java 问题】基础——泛型

接上文 泛型 47.Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? 47.Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? 什么是泛型? Java 泛型(generics)是…

REINFORCEMENT LEARNING THROUGH ACTIVE INFERENCE

摘要 强化学习(RL)的核心原则是智能体寻求最大化累积奖励之和。相比之下,主动推理,认知和计算神经科学中的一个新兴框架,提出代理人采取行动,以最大限度地提高有偏见的生成模型的证据。在这里,…

上门安装维修系统小程序开发详解及源码示例

随着智能家居和设备的普及,消费者对上门安装和维修服务的需求日益增加。为了满足这一市场需求,开发一款上门安装维修系统小程序成为了一种有效的解决方案。本文将详细介绍上门安装维修系统小程序的开发过程,并提供一个简单的源码示例&#xf…

人工智能的未来

引言 人工智能的未来发展将是科技与人类社会深度融合的过程。随着技术的不断进步,AI将在全球经济、文化、政治及道德伦理等领域产生深远影响。本文将探讨人工智能在未来可能的技术进步、应用领域、社会影响、伦理挑战,以及对全球未来的展望。 一、技术前…

数据结构之——二叉树

一、二叉树的基本概念 二叉树是数据结构中的重要概念,每个节点最多有两个子树,分别为左子树和右子树。这种结构具有明确的层次性和特定的性质。 二叉树有五种基本形态: 空二叉树:没有任何节点。只有一个根结点的二叉树&#xff…

【HTTPS】深入解析 https

我的主页:2的n次方_ 1. 背景介绍 在使用 http 协议的时候是不安全的,可能会出现运营商劫持等安全问题,运营商通过劫持 http 流量,篡改返回的网页内容,例如广告业务,可能会通过 Referer 字段 来统计是…

kubernetes get pods的STATUS字段显示ImagePullBackOff 的解决办法

问题: [rootmaster ingress]# kubectl -n ingress-nginx get pods NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-mcrc6 0/1 ImagePullBackOff 0 37m ingress-…

掌握RocketMQ——基本概念和系统架构

简述RcoketMQ 概念:RocketMQ是一个开源的分布式消息中间件,由阿里巴巴开发并贡献给Apache软件基金会。它用于处理高吞吐量、低延迟的消息传递,并广泛应用于现代分布式系统中。 1 基本概念 1.1 消息 (Message) 概念:消息是信息传…

自定义协议以及序列化和反序列化

我们知道TCP是全双工的,可以同时进行发收,因为他有一个发送缓冲区和一个接收缓冲区 我们使用write其实是把数据拷贝到发送缓冲区,使用read接收缓冲区的数据,其实是把数据拷贝到文件缓冲区里,发送的过程中,我…

脸书(Facebook)高效开发国外客户的6个技巧

Facebook作为全球使用人数最多的社媒平台,全球三分之一的人都在用。做外贸的话基本上是必须要去掌握的一个平台,因为通过Facebook是可以开发到很多其他渠道平时开发不到的优质客户的。 Facebook跟LinkedIn不同,LinkedIn比较偏向于大B的客户&…

传热学一些“数”和意义

物体单位面积上的导热热阻/单位表面积上的对流换热热阻 无量纲时间 Nu与Bi的表达式相同,但是意义是无量纲的h。它们表达式里的长度取值不同,比如同样一个平板,Bi的L是厚度,Nu是长度,因为Bi面向固体,λ为固…

八种基本服务器类型,看这篇完全够了

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 上午好,我的网工朋友。 服务器作为网络基础设施的核心组件,其重要性不言而喻。 无论是个人空间还是大型企业的数据中心&…

激波是什么?

你肯定能听懂。激波,激烈的波,代表特征:激波扫过你时,重则五脏震动,支离破碎。轻则耳膜震动,隆隆作响,当然也有相对你而言尺度很小的激波,没啥伤害。 所以激波,和相对于…

【VScode】VScode如何离线安装扩展

VScode如何离线安装扩展 一,简介二,操作步骤2.1 扩展下载2.2 扩展安装 三,总结 一,简介 本文以“C/C Extension Pack”扩展为例,介绍如何在没有网络的环境下给VScode安装扩展,供参考。 二,操作…

gradle.properties的注释乱码的解决方案

问题描述: gradle项目的配置脚本的注解出现乱码:(#?????) gradle.properties #??? PRODSERVER2193.168.0.22 解决方案:(3步) 增…

OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(上)

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 本文章是基于瑞芯微RK3568芯片的DAYU200开发板,进行标准…

解决AWS Organizatiion邀请多个Linker账号数量限额问题

文章目录 情景再现什么是 AWS Organizations?操作步骤完整支持工单截图参考链接 情景再现 冷知识:默认情况下,一个组织中允许的原定设置最大账户数为10个。新创建的账户和组织的限额可能会低于默认的 10 个账户。 现在需要用一个AWS账号&…

小红书推广的7个数字营销策略分享-华媒舍

数字营销在如今的商业环境中变得越来越重要。在众多数字营销策略中,小红书已经成为了一种受欢迎的推广平台。本文将介绍小红书推广的七个数字营销策略,重点聚焦于第四个策略,该策略能够帮助你超额完成销售目标。 数字营销策略一:明…

JAVA:Fastjson 序列化和反序列化的技术指南

请关注微信公众号:拾荒的小海螺 博客地址:http://lsk-ww.cn/ 1、简述 在 Java 领域,JSON 作为轻量级数据交换格式广泛使用。对于高性能、高并发场景,选择一个高效的 JSON 序列化和反序列化库非常重要。Fastjson 是由阿里巴巴开发…