【Java】Quartz的简单使用

maven依赖:

        <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.1</version>
        </dependency>

首先需要配置文件(quartz.properties):

org.quartz.scheduler.instanceName = QuartzTest
org.quartz.threadPool.threadCount = 10
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

需要有一个类实现Job接口,并实现其中的execute方法,简单的写一点:

package com.hj.quartz.impl;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import java.text.SimpleDateFormat;
import java.util.Date;

public class MyTestJob implements Job {

    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        Date date = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");

        System.out.println("当前时间为:" + dateFormat.format(date));

    }
}

main函数所在的类,使用实现类的类名,反射的方式创建任务:

package com.hj.quartz;

import com.hj.quartz.impl.MyTestJob;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;

public class QuartzTest  {
    public static void main(String[] args) {
        try {
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

            // 创建任务
            JobDetail job = JobBuilder.newJob(MyTestJob.class).withIdentity("job1","group1").build();

            // 创建触发器(指定出发规则)
            CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger",
                    "group1").withSchedule(CronScheduleBuilder.cronSchedule("0 45/1 20-22 * * ?")).build();

            // 获取执行时间
            Date date = scheduler.scheduleJob(job,trigger);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
            System.out.println("已经安排任务:" + dateFormat.format(date));

            scheduler.start();

            System.out.println("结束");
        } catch (SchedulerException e) {
            System.out.println("错误");
            e.printStackTrace();
        }

    }
}

Cron式子:

    0 0 12 * * ?            每天12点触发 
    0 15 10 ? * *           每天10点15分触发 
    0 15 10 * * ?           每天10点15分触发 
    0 15 10 * * ? *         每天10点15分触发 
    0 15 10 * * ? 2005      2005年每天10点15分触发 
    0 * 14 * * ?            每天下午的 2点到2点59分每分触发 
    0 0/5 14 * * ?          每天下午的 2点到2点59分(整点开始,每隔5分触发) 
    0 0/5 14,18 * * ?       每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发) 
    0 0-5 14 * * ?          每天下午的 2点到2点05分每分触发 
    0 10,44 14 ? 3 WED      3月分每周三下午的 2点10分和2点44分触发 
    0 15 10 ? * MON-FRI     从周一到周五每天上午的10点15分触发 
    0 15 10 15 * ?          每月15号上午10点15分触发 
    0 15 10 L * ?           每月最后一天的10点15分触发 
    0 15 10 ? * 6L          每月最后一周的星期五的10点15分触发 
    0 15 10 ? * 6L 2002-2005    从2002年到2005年每月最后一周的星期五的10点15分触发 
    0 15 10 ? * 6#3         每月的第三周的星期五开始触发 
    0 0 12 1/5 * ?          每月的第一个中午开始每隔5天触发一次 
    0 11 11 11 11 ?         每年的11月11号 11点11分触发(光棍节) 

参考链接:https://blog.csdn.net/fighting_sxw/article/details/81700944