Quartz基本使用

本文介绍了Quartz在Java Spring Boot应用中的使用,包括Scheduled注解的定时任务和Quartz的内存方式创建定时任务。详细讲解了cron表达式,并对比了Scheduled和Quartz的优缺点,提供了Quartz的配置及任务、触发器的创建步骤。
摘要由CSDN通过智能技术生成

一、定时任务

在很多情况下任务并非需要立即执行 , 而是需要往后或定期执行 , 这不可能人工去操作 , 所以定时任务就出现了
Scheduled 参数
@Scheduled(fixedRate=5000): 上⼀次开始执⾏时间点之后 5 秒再执⾏
@Scheduled(fixedDelay=5000): 上⼀次执⾏完毕时间点之后 5 秒再执⾏
@Scheduled(initialDelay=1000, fixedRate=5000): 第⼀次延迟 1 秒后执⾏ , 之后按 fixedRate 的规则 每5 秒执⾏⼀次
@Scheduled(cron="*/5 * * * * *"): 通过 cron 表达式定义规则

1、Scheduled创建定时任务

①、在SpringBoot的启动类类中加⼊ @EnableScheduling 注解,启⽤定时任务的配置

 ②、创建定时任务实现类

package com.lsy.code;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

//任务类
@Component
@Slf4j
public class Task {

    //fixedRate  上一次开始执行时间点之后1秒再执行
    @Scheduled(fixedRate = 1000,initialDelay = 5000)
    public void test(){
        log.warn("现在时间:"+ LocalDateTime.now());
    }

}

cron 表达式
cron 表达式是一个字符串 , 以 5 或者 6 个空格隔开 ( 示例中是被 5 个空格隔开 ), 字符串被切割为 6 个或者 7 个域 , 每个域都代表不同的含义
{Seconds} {Minutes} {Hours} {DayofMonth} {Month} {DayofWeek} {Year}
{Seconds} {Minutes} {Hours} {DayofMonth} {Month} {DayofWeek}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Quartz是一个强大的作业调度框架,可以用来实现定时任务。下面是Quartz基本使用方法: 1. 引入Quartz依赖 在项目的pom.xml文件中添加Quartz的依赖: ``` <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version> </dependency> ``` 2. 配置Scheduler 在应用程序中创建一个Scheduler实例,用于调度作业。可以使用StdSchedulerFactory类创建一个Scheduler实例: ``` Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); ``` 3. 创建Job 创建一个实现了Job接口的类,并实现execute方法,该方法中实现需要执行的业务逻辑。 ``` public class MyJob implements Job { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { // 业务逻辑 } } ``` 4. 创建JobDetail 创建一个JobDetail实例,用于描述Job的实现类及其它相关属性。 ``` JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build(); ``` 其中,withIdentity方法用于指定Job的名称和所属的组。 5. 创建Trigger 创建一个Trigger实例,用于描述Job的触发条件。 ``` Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).repeatForever()).build(); ``` 其中,withIdentity方法用于指定Trigger的名称和所属的组,startNow方法用于指定Trigger的启动时间,withSchedule方法用于指定Trigger的调度策略,这里使用SimpleScheduleBuilder实现一个简单的定时调度策略,每隔10秒执行一次。 6. 调度Job 将JobDetail和Trigger传递给Scheduler的scheduleJob方法,用于调度Job。 ``` scheduler.scheduleJob(jobDetail, trigger); ``` 7. 启动Scheduler 使用Scheduler的start方法启动Scheduler。 ``` scheduler.start(); ``` 通过以上步骤,就可以使用Quartz实现简单的定时任务调度了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值