SpringBoot定时任务使用详解

在进行SpringBoot的定时任务使用介绍之前,我觉得有必要向大家说明一下实现定时任务的几种方式。

如果你不想了解其他方式,可跳过第一节。

 一、定时任务的几种实现方式

在JAVA开发领域,目前可以通过以下几种方式进行定时任务:

(注:因为这篇文章主要介绍在SpringBoot中使用定时任务,所以其他实现方式这里只做简单记录,有兴趣的可以去深入了解)

1、Timer:jdk中自带的一个定时调度类,可以简单的实现按某一频度进行任务执行。提供的功能比较单一,无法实现复杂的调度任务。

2、ScheduledExecutorService:也是jdk自带的一个基于线程池设计的定时任务类。其每个调度任务都会分配到线程池中的一个线程执行,所以其任务是并发执行的,互不影响。

3、Spring Task:Spring提供的一个任务调度工具,支持注解和配置文件形式,支持Cron表达式,使用简单且功能强大。

4、Quartz:一款功能强大的任务调度器,可以实现较为复杂的调度功能,如每月一号执行、每天凌晨执行、每周五执行等等,还支持分布式调度,就是配置稍显复杂。

 

二、SpringBoot中定时任务使用

1、引入依赖

只需要引入spring-boot-starter依赖就可以。

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
</dependencies>

2、 开启定时任务

在启动类上面加上@EnableScheduling注解即可开启定时任务。

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

3、创建定时任务类

创建一个定时任务类,在方法上加上@Scheduled注解,注解的参数可以配置时间。注意不要忘记加上@Component。

@Component
public class MyTask {
    @Scheduled(fixedRate = 5000)
    public void testTaskFirst() {
        System.out.println("定时任务一:每五秒执行一次,当前时间:"+ LocalTime.now());
    }

    @Scheduled(cron = "0 28 03 ? * *")
    public void testTaskSecond() {
        System.out.println("定时任务二:指定每天3:26执行,当前时间:"+LocalTime.now());
    }
}

测试结果:

我们可以清楚的看到两个定时任务分别都已经执行。

 

三、@Scheduled注解参数说明

1、参数说明:

@Scheduled 参数可以接受两种定时的设置,一种是我们常用的cron="*/5 * * * * ?",一种是 fixedRate = 5000,两种都表示每隔五秒打印一下内容。

fixedRate 说明:

  • @Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行。
  • @Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行。
  • @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次。

 

 四、Cron表达式与生成工具

 Cron表达式生成工具地址:http://qqe2.com/cron

 

  • 6
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值