Quartz的使用(定时任务调度框架)

Quartz是要做定时任务的调度,设置好触发的时间规则,以及相应的任务(Job)即可 

导入依赖

<!--Quartz定时框架-->
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.3.2</version>
</dependency>

定义Job

import org.quartz.*;

import java.util.Date;

//job任务
public class HelloJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        JobDetail jobDetail = jobExecutionContext.getJobDetail();
        JobKey key = jobDetail.getKey();
        String name = key.getName();
        String group = key.getGroup();
        System.out.println(name + ":" + group);
        System.out.println("hello job exec:" + new Date());
        System.out.println("---------------------");
    }
}

 测试

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.GregorianCalendar;

public class HelloQuartz {
    public static void main(String[] args) throws SchedulerException {
        //quartz API
        //1.调度器Scheduler
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        //2.触发器;描述规则
        SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
                .startNow()
                //详细的响应规则
                .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).withRepeatCount(10))
                .endAt(new GregorianCalendar(2022, 3, 20, 11, 25, 30).getTime())
                .build();
        //3.JobDetail
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();
        //4.将JobDetail和触发器增加到调度器中
        scheduler.scheduleJob(jobDetail, trigger);
        //5.启动,调度器开始工作
        scheduler.start();

    }
}

运行结果

可以使用配置文件,自定义配置规则

# 指定调度器名称,非实现类
org.quartz.scheduler.instanceName=DefaultQuartzScheduler
# 指定线程池实现类
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
# 线程池线程数量
org.quartz.threadPool.threadCount=10 
# 优先级,默认5
org.quartz.threadPool.threadPriority=5
# 非持久化job
org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore

 触发器CronTrigger

用这个可以在线练习测试cron表达式 

quartz/Cron/Crontab表达式在线生成工具-BeJSON.com

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.util.GregorianCalendar;

public class CronQuartz {
    public static void main(String[] args) throws SchedulerException {
        //quartz API
        //1.调度器Scheduler
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        //2.触发器;描述规则
        CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
                //详细的响应规则
                .withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * 22 2 ?"))
                .build();
        //3.JobDetail
        JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group1").build();
        //4.将JobDetail和触发器增加到调度器中
        scheduler.scheduleJob(jobDetail, trigger);
        //5.启动,调度器开始工作
        scheduler.start();
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值