送你!!!spring定时任务详解+案例

本文详细介绍了Spring中的定时任务,包括基于@Scheduled注解的定时任务,如何通过SchedulingConfigurer接口实现动态调整执行周期,以及如何创建可更改时间的定时任务。示例代码展示了如何设置定时任务的执行频率,并且通过修改数据库数据或接口调用来实时变更执行间隔。
摘要由CSDN通过智能技术生成

本文目录:

  • 定时任务概述、原理
  • 基于注解(@Scheduled)的定时任务
  • 基于接口(SchedulingConfigurer)的定时任务
  • 可更改时间的定时任务

一、定时任务概述、原理

概述:开发中经常会使用到定时任务,顾名思义,定时任务就是定时执行的方法,即定时执行的代码。比如,为了减少服务器或者数据库的压力,我们会将一些对服务器或者数据库等有压力的高频操作,改为定时去执行,例如每晚凌晨0点同步A系统的数据到B系统,每2小时统计用户的积分情况,每周一给支付宝用户推送上周收入支出数据报表等。一 般情况下,很多业务处理会定时在凌晨处理,因为避开了户使用高峰期,服务器资源充足,而且对用户影响小。

原理:spring在初始化bean后,通过“postProcessAfterInitialization”拦截到所有的用到“@Scheduled”注解的方法,并解析相应的的注解参数,放入“定时任务列表”等待后续处理;之后再“定时任务列表”中统一执行相应的定时任务(任务为顺序执行,先执行cron,之后再执行fixedRate)。

二、基于注解(@Scheduled)的定时任务

需要注意的是@Scheduled默认是串行的,单线程,当开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。

@Configuration

@EnableScheduling //开启定时任务

public class ScheduleTask {

//每10秒执行一次

@Scheduled(cron = “0/10 * * * * ?”)

private void configureTasks() {

System.out.println(“我是一个定时任务”);

}

}

@Scheduled 除了cron还提供另外三种种方式: fixedRate,fixedDelay,initialDelay

1、cron表达式可以定制化执行任务,但是执行的方式是与fixedDelay相近的,也是会按照上一次方法结束时间开始算起。

2、fixedDelay控制方法执行的间隔时间,是以上一次方法执行完开始算起,如上一次方法执行阻塞住了,那么直到上一次执行完,并间隔给定的时间后,执行下一次。

@Configuration

@EnableScheduling //开启定时任务

public class ScheduleTask {

//每10秒执行一次

@Scheduled(fixedDelay = 10000)

private void configureTasks() {

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值