java开发中如何使用定时任务

定时任务概述:

任务调度:

是指系统为了自动完成特定任务,在约定的特定时刻执行任务的过程。有了任务调度,即可解放更多的人力,而是由系统自动去执行任务。

常用业务场景案例:
  • 某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。
  • 某银行系统需要在信用卡到期还款日的前三天进行短信提醒。
  • 某财务系统需要在每天凌晨0:10结算前一天的财务数据,统计汇总。
  • 12306会根据车次的不同,设置某几个时间点进行分批放票。
如何实现任务调度?
  • 多线程方式,结合sleep

  • JDK提供的API,例如:Timer、ScheduledExecutor

  • 框架,例如Quartz ,它是一个功能强大的任务调度框架,可以满足更多更复杂的调度需求

  • spring task

 cron表达书:
  • cron表达式是一个字符串,用来设置定时规则,由7个部分组成,每部分中间用空格隔开。
7个部分的含义:

  

组成部分含义取值范围
第一部分Seconds (秒)0-59
第二部分Minutes(分)0-59
第三部分Hours(时)0-23
第四部分Day-of-Month(天)1月31日
第五部分Month(月)0-11或JAN-DEC
第六部分Day-of-Week(星期)1-7(1表示星期日)或SUN-SAT
第七部分Year(年) 可选1970-2099

cron表达式也可以设置一些特殊符号,更加灵活的设置定时规则。

符号含义
?表示不确定的值。当两个子表达式其中一个被指定了值以后,为了避免冲突,需要将另外一个的值设为“?”。例如:想在每月20日触发调度,不管20号是星期几,只能用如下写法:0 0 0 20 * ?,其中最后以为只能用“?”
*代表所有可能的值
,设置多个值,例如”26,29,33”表示在26分,29分和33分各自运行一次任务
-设置取值范围,例如”5-20”,表示从5分到20分钟每分钟运行一次任务
/设置频率或间隔,如"1/15"表示从1分开始,每隔15分钟运行一次任务
L用于每月,或每周,表示每月的最后一天,或每个月的最后星期几,例如"6L"表示"每月的最后一个星期五"
W表示离给定日期最近的工作日,例如"15W"放在每月(day-of-month)上表示"离本月15日最近的工作日"
#表示该月第几个周X。例如”6#3”表示该月第3个周五
举例子:

*/5 * * * * ?        每隔5秒运行一次

0 0 11 * * ?        每天11点运行一次

0 0 1 6 * ?        每月6号凌晨1点执行一次

0 0 23 L* ?        每月最后一天23点运行一次

0 28,32,47 * * * ?在 28分,32分,33分运行一次

0 0/30 9-17 * * ?     朝九晚五工作时间内,每半小时运行一次任务

0 15 10 ? * 6#3      每月的第三个星期五上午,10:15运行一次任务

Spring Task入门案例:

1). 导入maven坐标 spring-context 目前项目中只要导入了springboot相关依赖会自动导入,这一步无需操作

2).自定义定时任务类

定义一个定时任务类:

在com.sde包下:新建一个job包,里面新建一个MyTaskOne任务类

@Slf4j
@Component
public class MyTaskOne {}

 编写一个测试方法,每隔5秒执行一次。

代码:

@Slf4j
@Component
public class MyTaskOne {@DisplayName(value = "每隔5秒执行一次")@Scheduled(cron = "0/5 * * * * ?")void test1(){LocalDateTime now = LocalDateTime.now();System.out.println(now);}
}

记得要在我们的spring boot 启动类上,加一个注解:@EnableScheduling

 
@SpringBootApplication
@EnableScheduling
public class ZzylApplication {public static void main(String[] args) {SpringApplication.run(ZzylApplication.class, args);}
}

效果:

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

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

相关文章

CHS_03.1.3.3+系统调用

CHS_03.1.3.3系统调用 系统调用什么是系统调用,有何作用?系统调用又和普通的库函数的调用又有一定的区别为什么系统调用是必须的系统调用 按功能分类 可以分为这样的一些系统调用系统调用过程 这个小节的全部内容 系统调用 相关的知识 我们会为大家介绍什…

vulhub中的Apache HTTPD 多后缀解析漏洞详解

Apache HTTPD 多后缀解析漏洞 1.查看python版本 这里python版本很重要,因为版本过低可能会导致后面的结果运行不成功 这里我就遇到了因为版本过低而执行不了docker-compose up -d的情况 查看python版本 cd /usr/bin ls -al python* 当版本过低时安装高版本的 …

STM32-04-STM32时钟树

STM32时钟树 什么是时钟? 时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波。(时钟是单片机的脉搏,搞懂时钟走向及关系,对单片机使用至关重要)。 时钟树 时钟源 2个外部时钟源 高速外部振荡器(HSE…

简单几个步骤几行代码一步一步掌握NLP自然语言处理通过Transformers模型实现包括情感分析,垃圾邮件检测,语法纠错,文本推理等

简单几个步骤几行代码一步一步掌握NLP自然语言处理通过Transformers模型实现包括情感分析,垃圾邮件检测,语法纠错,文本推理等。 垃圾邮件是广告、欺诈或其他不相关信息的电子邮件,给我们的日常工作和生活带来了困扰。为了有效过滤和阻止垃圾邮件的到达,我们需要使用各种判断…

安卓(雷电)模拟器清除屏幕密码

1、设置磁盘可写 启动模拟器,然后在模拟器的设置界面,设置磁盘共享为可写入,重启模拟器,如下图: 2、找到模拟器目录 返回桌面,右键模拟器图标,打开文件所在目录,如下图&#xff1a…

Spring MVC组件及RequestMapping注解

springmvc组件 DispatcherServlet前端控制器 用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet 的存在降低了组件之间的耦合性。 Ha…

四、Java中SpringBoot组件集成接入【Knife4j接口文档(swagger增强)】

四、Java中SpringBoot组件集成接入【Knife4j接口文档(swagger增强)】 1.Knife4j介绍2.maven依赖3.配置类4.常用注解使用1.实体类及属性(ApiModel和ApiModelProperty)2.控制类及方法(Api、ApiOperation、ApiImplicitPar…

vue+springboot+mybatis-plus实现乡村公共文化服务系统

项目前端:https://gitee.com/anxin-personal-project/rural-public-cultural-services-front 项目后端:https://gitee.com/anxin-personal-project/rural-public-cultural-services-behind 1.系统简介 乡村公共服务文化提供给管理员、商家、村民。管理…

面相圆润是有福气的象征

在中国传统文化中,面相是一个非常重要的概念。相信大家肯定听说过“相由心生”这个成语吧,这就是告诉我们,一个人的面貌其实是可以反映出他内心的状态和气质,也可以反映其性格、健康状况和运势等。而一个圆润的面相,则…

SpringBoot 配置文件加载优先级

SpringBoot 配置文件加载优先级 前言SpringBoot 配置文件加载优先级 前言 最近在使用k8s部署项目的时候,发现Dockerfile文件中的命令后面跟的参数,无法覆盖nacos中的参数,今天有时间正好来整理一下Springboot配置的加载顺序 SpringBoot 配置文件加载优先级 整理加载顺序第一个肯…

合宙“全球通“模组Air795UG上市,支持4G+2G全球频段

简介 全球化浪潮之下,各物联网厂商纷纷激流勇进。有的已经在海外开拓一番天地,有的磨刀霍霍准备杀向海外,可谓“国内卷完,国外卷”。 合宙作为物联网设备的核心供应商,自然要为行业客户出海助力。针对海外区域网络设备…

MT6785安卓核心板_联发科MTK6785/Helio G95/曦力G95核心板定制

MT6785安卓核心板是基于MT6785(Helio G95)处理器,具备八核处理器结构,包括2颗主频为2.05GHz的Cortex A76处理器和6颗主频为2.0GHz的Cortex A55处理器,以及六颗Cortex-A55处理器。而在GPU方面,采用了Arm Mali-G76 MC4,频…