【无标题】

总结

  1. 项目是SSM项目使用第一种和第三种开启定时任务
  2. 项目是Springboot项目使用第二种和第三种开启定时任务

这种定时任务不推荐首项使用:
● 需要每次初始化Bean,即修改配置文件中值的时候,需要重新加载Bean。
● 是单线程的定时任务,会出现线程阻塞的情况。当一个线程未执行完成,会影响后续的定时任务
SpringMVC的task定时任务也是首项使用,原因如上。
当然不考虑多线程或者定时任务少的时候,可以考虑这两种定时任务。不需要引入第三方依赖,是属于Spring管理的定时任务

1.1推荐定时任务

1.1.1 XXL-JOB

原文链接:https://blog.csdn.net/mcband/article/details/129199698
xXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
将调度行为抽象形成“调度中心”公共平台,而平台自身并不承担业务逻辑,“调度中心”负责发起调度请求。
将任务抽象成分散的JobHandler,交由“执行器”统一管理,“执行器”负责接收调度请求并执行对应的JobHandler中业务逻辑
参考官网:https://github.com/xuxueli/xxl-job
中文文档:https://www.xuxueli.com/xxl-job/#《分布式任务调度平台XXL-JOB》

1.1.2 quartz

quartz是一个定时调度的框架,指定时间内触发执行某个动作;它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中

原文链接:https://blog.csdn.net/qq_45087487/article/details/132063403

1.1.3 安全问题

选择技术栈需要考虑到安全问题:签证过期,是否存在漏洞,是否需要引入第三方jar包/依赖等等。公司发现quartz有以上问题。选择了其他定时任务
开启定时任务

2.自定义配置类

  1. 使用自定义类:@EnableScheduling开启定时任务
@Configuration
@EnableScheduling
public class ScheduledConfig {
}
  1. 使用SpringBoot启动类
    在启动类上使用@EnableScheduling

3. 使用配置文件开启定时任务

定时任务实现类

@Component
public class timeTaskDEmo {

    /**
     * 每三分钟执行一次。延迟51秒
     */
    @Scheduled(cron ="51 0/3 * * * ?")
        public void executeTask() {
        int i = 0;
        System.out.print("定时任务开启"+ i++);
    }

    /**
     * initialDelay:延迟毫秒执行
     * fixedRate:每xx毫秒执行一次
     */
    @Scheduled(initialDelay = 100, fixedRate = 30000)
    public void executeTask1() {
        int i = 0;
        System.out.print("定时任务开启1:"+ i++);
    }
}

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值