0
点赞
收藏
分享

微信扫一扫

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

古得曼_63b6 2022-03-20 阅读 89

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

导入依赖

定义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();

    }
}

运行结果

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

 触发器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();
    }
}

 

 

举报

相关推荐

0 条评论