任务调度使用(@EnableScheduling和@Scheduled)和定时任务

一、定时任务

通过配置注解来开启对定时任务的支持,然后在需要定时执行的方法上面配置注解@Scheduled即可。

二、注解描述

@EnableScheduling:在启动类中使用该注解,开启自动扫描功能

@EnableScheduling
public class App {
public static void main(String[] args) {
  SpringApplication.run(App.class)  
}
}

@Scheduled:在需要执行的定时方法上添加该注解即可

@Component
public class Send{
@Scheduled("cron = "1-10 * * * * *"")
public class  time{}
}
复制代码
 1、fixedDelay和fixedRate,单位是毫秒;
      区别:fixedRate---,每多少毫秒执行一次,与具体业务执行时间没关系;而fixedDelay是当任务执行完毕后按照设定的毫秒值执行任务。所以根据实际业务不同,我们会选择不同的方式。
 2、cron表达式:依据业务需求,可设定具体的任务执行时间,预定时间一到就会自动执行;
   cron一共有7位,但是最后一位是年,可以留空,一般情况可以写6位:
   * 第一位,表示秒,取值0-59
   * 第二位,表示分,取值0-59
   * 第三位,表示小时,取值0-23
   * 第四位,日期天/日,取值1-31
   * 第五位,日期月份,取值1-12
   * 第六位,星期,取值1-7,星期一,星期二...,注:不是第1周,第二周的意思
          另外:1表示星期天,2表示星期一。
   * 第7为,年份,可以留空,取值1970-2099
 3、cron中,还有一些特殊的符号,含义如下:
   (*)星号:可以理解为每的意思,每秒,每分,每天,每月,每年...
   (?)问号:问号只能出现在日期和星期这两个位置。
   (-)减号:表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12
   (,)逗号:表达一个列表值,如在星期字段中使用“1,2,4”,则表示星期一,星期二,星期四
   (/)斜杠:如:x/y,x是开始值,y是步长,比如在第一位(秒) 0/15就是,从0秒开始,每15秒,最后就是0,15,30,45,60    另:*/y,等同于0/y
 4、举例描述cron:
   0 0 8 * * ?     每天8点执行
   0 30 8 * * ?    每天8点30分执行
   0 30 5 ? * *    每天8点30分执行,与上面作用相同,区别特殊符号
   0 5/5 8 * * ?   每天8点的 5分,10分,15分,20分,35分,40分,45分,50分,55分这几个时间点执行
   0 30 8 ? * 1    每周星期天,8点30分 执行,注:1表示星期天    
   0 30 8 ? * 1#3  每个月的第三个星期,星期天执行,#号只能出现在星期的位置
复制代码

除了cron属性之外,@Scheduled还有以下的属性可以配置
zone:取服务器所在地的时区

fixedDelayString:上一次执行完毕时间点之后多长时间再执行

fixedRate:自项目开始的时候每隔几秒钟定时执行

fixedRateString

initialDelay:第一次延迟多长时间后再执行,可以同fixedRate组合使用

initialDelayString

ScheduledExecutorService、开源工具包Quartz,以及Spring和Quartz的结合等内容。

 

JDK原生定时工具TIMER
链接:https://blog.csdn.net/m0_62714732/article/details/121063214

posted @   无效_rank  阅读(553)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示