zoukankan      html  css  js  c++  java
  • [转载]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任务就完成了

  • 相关阅读:
    赫尔维茨公式
    从解析几何的角度分析二次型
    Struts 1 Struts 2
    记一次服务器被入侵的调查取证
    契约式设计 契约式编程 Design by contract
    lsblk df
    Linux Find Out Last System Reboot Time and Date Command 登录安全 开关机 记录 帐号审计 历史记录命令条数
    Infrastructure for container projects.
    更新文档 版本控制 多版本并发控制
    Building Microservices: Using an API Gateway
  • 原文地址:https://www.cnblogs.com/liuzhuqing/p/7480299.html
Copyright © 2011-2022 走看看