博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz定时任务学习(一)简单任务
阅读量:7028 次
发布时间:2019-06-28

本文共 2088 字,大约阅读时间需要 6 分钟。

学习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任务就完成了

转载地址:http://ynrxl.baihongyu.com/

你可能感兴趣的文章
Java 接口
查看>>
Android 微信第三方登录
查看>>
硬盘的读写原理
查看>>
实例 centos自动挂载、备份windows共享文件夹,并删除第7日前当天的备份
查看>>
LNMP下动静分离部署phpmyadmin软件包
查看>>
如何写更好的自动化测试用例
查看>>
60再谈指针
查看>>
repost
查看>>
android异步加载AsyncTask
查看>>
GCC Stack-Smashing Protector
查看>>
虚拟机Visualbox安装Ubuntu Server
查看>>
用带余除法可以解决一切部分分式的题目
查看>>
vs 生成事件
查看>>
jmeter 实战项目总结2——微信端
查看>>
php.ini 中文版
查看>>
即时通信客户端流程,
查看>>
布隆过滤器redis缓存
查看>>
01-数据仓库之数据建模
查看>>
Nginx 安装
查看>>
hidesBottomBarWhenPushed 设置为NO的问题
查看>>