任务调度使用(@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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端