springboot 常用的定时任务常用表达式

一 常用表达式1:fixedRate

1.1 fixedRate这种方式

1.@Scheduled为设置定时任务周期的注解,参数常用的为两种:

第一种就是fixedRate,他表示以一种固定频率去执行,单位为毫秒,例如@Scheduled(fixedRate = 5000) 表示为每五秒执行一次

2.fixedRate 表示任务执行之间的时间间隔,具体是指两次任务的开始时间间隔,即第二次任务开始时,第一次任务可能还没结束。

3.fixedDelay 表示任务执行之间的时间间隔,具体是指本次任务结束到下次任务开始之间的时间间隔。

4.initialDelay 表示首次任务启动的延迟时间。

5.所有时间的单位都是毫秒。

二 常用表达式2:cron这种方式

2.1 cron这种方式

cron这种方式

@Scheduled 注解也支持 cron 表达式,使用 cron 表达式,可以非常丰富的描述定时任务的时间。cron 表达式格式如下:

 意思是说,月份和星期是冲突,写的时候只能写一个吗?所以写出的表达式总共6位。

2.2  实操案例

1.第二种为cron,他可以表达某种特定频率,例如每天晚上三点执行,每个星期三中午十二点等

cron 表达式是从后往前读的,遇到 * 就读每 XX, 遇到数字就读 从第 XX 开始, 遇到 / 就读每隔多 XX 最后加个执行一次

0/10 * * * * ?   表示 每星期,每年,每月,每天,每小时,每分钟,从第 0 秒开始每隔 5 秒执行一次

这里列出几个常用的:

1.每小时0分0秒执行一次:  0 0 * * * *                     

2.每隔10秒执行一次:    0/10 * * * * ?                                       

  这个是错误写法          */10 * * * * ?     切记不要这样写

3.每隔1分钟执行一次:

  0 */1 * * * ?   

  0 0/1 * * * ?

0 * */1 * * ? 

每隔5分钟执行一次:0 0/5 * * * ?

4.每天23点执行一次:0 0 23 * * ?

每天凌晨1点执行一次:0 0 1 * * ?

0 0 12 * * ?   每天中午12点触发 

5. 每月1号凌晨1点执行一次:0 0 1 1 * ?

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

每周星期天凌晨1点实行一次:0 0 1 ? * L

在26分、29分、33分执行一次:0 26,29,33 * * * ?

每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

三 问题

3.1 问题注意

在线测试表达式网址: https://cron.qqe2.com/

 

设置每个40秒执行一次,从结果来看并没有实现,40+40>60,则截取,从下一秒的00开始重新分析。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot提供了多种定时任务的实现方式,其中最常用的是使用@Scheduled注解。 1. 创建定时任务类 ```java @Component public class MyScheduledTask { @Scheduled(fixedDelay = 5000) public void task1() { // 定时任务逻辑 } @Scheduled(cron = "0 0 12 * * ?") public void task2() { // 定时任务逻辑 } // 其他定时任务方法... } ``` 在Spring Boot中,我们可以使用@Component注解将定时任务类声明为一个Spring组件,从而使得Spring能够自动扫描并注册该类中的定时任务方法。 在MyScheduledTask类中,我们定义了两个定时任务方法: - task1()方法使用@Scheduled注解,并设置fixedDelay属性为5000,表示每隔5秒执行一次该定时任务。 - task2()方法使用@Scheduled注解,并设置cron表达式为"0 0 12 * * ?",表示每天12点执行该定时任务。 2. 配置定时任务线程池 默认情况下,Spring Boot会为每个定时任务创建一个单独的线程执行,如果定时任务数量很多,就会导致线程池满载,进而影响系统的正常运行。为了避免这种情况,我们可以通过配置定时任务线程池来控制定时任务的并发执行数量。 在application.properties文件中添加如下配置: ```properties # 定时任务线程池配置 spring.task.scheduling.pool.size=10 ``` 上述配置表示定时任务线程池大小为10个线程。 3. 启动定时任务Spring Boot应用程序启动时,定时任务会自动启动执行,无需额外的配置。 如果需要手动启动或停止定时任务,可以使用Spring的TaskScheduler接口提供的相关方法实现。例如,要启动task1()方法对应的定时任务,可以使用以下代码: ```java @Autowired private TaskScheduler taskScheduler; public void startTask1() { taskScheduler.schedule(new MyScheduledTask()::task1, new CronTrigger("0/5 * * * * ?")); } ``` 上述代码中,我们通过TaskScheduler.schedule()方法指定了要执行的定时任务方法和触发器,这里使用了CronTrigger来触发task1()方法的执行,表示每隔5秒执行一次。通过这种方式,我们可以更加灵活地控制定时任务的启动和停止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值