• 【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

  • 相关阅读:
    多线程02
    多线程01
    CSS
    Mybatis CRUD中万能Map的用法及优势
    Tomcat配置
    Node.js+Vue+Webpack
    Java的几种常见排序算法
    maven插件 mybatis逆向工程
    ssm依赖
    mybatis spring整合依赖配置
  • 原文地址:https://www.cnblogs.com/to-red/p/11332948.html
Copyright © 2020-2023  润新知