三种定时任务总结

本文介绍了Spring自带的@Scheduled和@EnableScheduling实现定时任务,探讨了Quartz的优缺点,并详细阐述了XXL-Job的特点和使用方法,包括拉取镜像、配置数据库、创建调度任务等步骤,最后提到了Java原生的Timer和TimerTask作为定时任务的另一种选择。
摘要由CSDN通过智能技术生成

1、@Scheduled、@EnableScheduling

在一些业务场景中需要执行定时操作来完成一些周期性的任务,比如每隔一周删除一周前的某些历史数据以及定时进行某项检测任务等等。Spring 3.0 版本之后自带定时任务,提供了@EnableScheduling注解和@Scheduled注解来实现定时任务功能。

  • 元注解@Target表明@Scheduled注解可以在方法上使用(ElementType.METHOD),也可以作为元注解对其他注解进行注解(ElementType.ANNOTATION_TYPE)
  • 元注解@Retention表明此注解会被JVM所保留,也就是会保存在运行时(RetentionPolicy.RUNTIME)
  • 元注解@Documented表明此注解应该被 javadoc工具记录。默认情况下javadoc是不包括注解的。
  • JDK8添加的注解@Repeatable表明此注解可以在同一个地方被重复使用

API官网:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/annotation/EnableScheduling.html

1、@Scheduled:默认为单线程,开启多个任务时,任务的执行时机会受上一个任务执行时间的影响。在需要配置定时任务的方法上使用注解@Scheduled即可。

@Scheduled(cron = "0 7 22 * * ? ")
@Override
public void testSchedule() {
    System.out.println("-------- 测试定时器----------");
}

2、@EnableScheduling注解: 在配置类上使用,开启计划任务的支持(类上)。

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


Cron在线表达式生成器

二、quartz

因为在日常的业务中任务的执行时间经常会变动,即cron的表达式,所以用@Scheduled就有些麻烦了,因为需要去找到各个位置并修改,而quartz就很好的可以封装成一个可修改的调用接口,方便业务的多变性。

1、Spring Boot 集成 Quartz 的方式也很简单,首先引入封装好的 Quartz 依赖。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值