• [转载]Quartz定时任务学习(一)


    学习quartz首先了解三个概念:

    调度器:负责调度作业和触发器;

    触发器:设置作业执行的时间、参数、条件等;(简单触发器和Cron触发器)

    作业:定时任务内容,被执行的程序;

    下载必要的jar包,直接去官网下载,将quartz-x.x.x.jar 和core 和/或 optional 文件夹中的 jar 文件放在项目的文件夹或项目的类路径中

    Quartz的几个核心的接口和类为: Job接口:自己写的“定时程序”实现此接口的void execute(JobExecutionContext arg0)方法,Job还有一类为有状态的StatefulJob接口,如果我们需要在上一个作业执行完后,根据其执行结果再进行下次作业的执行,则需要实现此接口。Trigger抽象类: 调度类(Scheduler)在时间到时调用此类,再由trigger类调用指定的定时程序。Quertz中提供了两类触发器 为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几点结束,隔多长时间执行,共执行多少次等, 后者提供了使用表达式来描述定时功能,因此适用于比较复杂的定时描述,例如每个月的最后一个周五,每周的周四等。JobDetail类:具体某个定时程序的详细描述,包括Name,Group,JobDataMap等。JobExecutionContext类:定时程序执行的run-time的上下文环境,用于得到当前执行的Job的名字,配置的参数等。JobDataMap类:用于描述一个作业的参数,参数可以为任何基本类型例如String,float等,也可为某个对象的引用.JobListener,TriggerListener接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。JobStore类:在哪里执行定进程序,可选的有在内存中,在数据库中。

    开始:边看例题边学习,首先从简单触发器开始……

    1、作业通过实现 org.quartz.job 接口,可以使 Java 类变成可执行的。这个类用一条非常简单的输出语句覆盖了 execute(JobExecutionContext context) 方法。

    import java.util.Date;
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;

    public class SimpleQuartzJob implements Job {

        public SimpleQuartzJob() {
        }

        public void execute(JobExecutionContext context) throws JobExecutionException {
            System.out.println("In SimpleQuartzJob - executing its JOB at "
                    + new Date() + " by " + context.getTrigger().getName());
        }
    }

    2、触发器和调度器

    public void task() throws SchedulerException
        {
            //通过SchedulerFactory来获取一个调度器
            SchedulerFactory schedulerFactory = new StdSchedulerFactory();
            Scheduler scheduler = schedulerFactory.getScheduler();
            
            
            
            //引进作业程序
            JobDetail jobDetail =
            new JobDetail("jobDetail-s1", "jobDetailGroup-s1", SimpleQuartzJob.class);

             //new一个触发器
            SimpleTrigger simpleTrigger =
            new SimpleTrigger("simpleTrigger", "triggerGroup-s1");


            //设置作业启动时间

            long ctime = System.currentTimeMillis();
            simpleTrigger.setStartTime(new Date(ctime));


            //设置作业执行间隔
            simpleTrigger.setRepeatInterval(10000);

            //设置作业执行次数
            simpleTrigger.setRepeatCount(10);

            //设置作业执行优先级默认为5
            //simpleTrigger.setPriority(10);


            //作业和触发器设置到调度器中
            scheduler.scheduleJob(jobDetail, simpleTrigger);
           
            //启动调度器
            scheduler.start();
        }

    一个简单的quartz任务就完成了

  • 相关阅读:
    20年美亚杯WRITE UP
    博客搬迁
    前端工程化1-模块
    移动端(h5)工具函数--视口适配(viewport)
    Understanding ES6 Modules(译)
    手写http请求并发、重试、超时函数
    两道编程题引发的思考
    前端基础走查(六):异步任务和事件循环
    vue 本地图片批量下载以及压缩成zip文件下载
    mybatis generator逆向工程
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480298.html
Copyright © 2020-2023  润新知