Quartz学习

自己在网上了解了Quartz框架,写了个例子

1Quartz介绍

Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE  J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。

2、任务调度实现方式比较

Timer基于开始时间与重复间隔的任务调度(单线程执行)

Scheduler基于开始时间与重复间隔的任务调度(多线程执行)

 Quartz :实现复杂的任务调度。

3、下载(官网下载最新版本Quartz 2.2.1

http://www.quartz-scheduler.org/downloads

4、体系结构

Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述 

概念:

scheduler

任务调度器

trigger

触发器,用于定义任务调度时间规则

job

任务,即被调度的任务作业是能够调度的可执行任务,实现org.quartz.Job接口即可。

一个job 可以被多个 trigger 关联,但是一个 trigger 只能关联一个 job。

5、例子

public classHelloJob implements Job { 

 

@Override

publicvoid execute(JobExecutionContext context) throws JobExecutionException {

//TODO Auto-generated method stub

System.out.println("执行Job时间:"+ new Date()); 

}

 

 

 

import job.HelloJob;

 

importorg.quartz.DateBuilder;

importorg.quartz.JobBuilder;

importorg.quartz.JobDetail;

importorg.quartz.Scheduler;

importorg.quartz.SchedulerException;

importorg.quartz.SimpleScheduleBuilder;

importorg.quartz.Trigger;

importorg.quartz.TriggerBuilder;

importorg.quartz.TriggerKey;

importorg.quartz.impl.StdSchedulerFactory;

 

 

 

public classSimpleExample {

 

 

    public void run() throws Exception { 

           try {

            /*通过SchedulerFactory来获取一个调度器;STD:standard标准的意思 */ 

            Scheduler scheduler =StdSchedulerFactory.getDefaultScheduler(); 

            /* 作业、任务 */ 

            JobDetail job =JobBuilder.newJob(HelloJob.class).withIdentity("myJobName","myJobGroup").build();

            /* 触发器 */ 

            Trigger trigger =TriggerBuilder.newTrigger()

                   .withIdentity(TriggerKey.triggerKey("myTrigger","myTriggerGroup"))

                   .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).withRepeatCount(10))

               .startAt(DateBuilder.futureDate(1, DateBuilder.IntervalUnit.SECOND))

                .build();

            scheduler.scheduleJob(job,trigger); 

            scheduler.start(); 

          

            Thread.sleep(60*1000);

            scheduler.shutdown();

        } catch (SchedulerException e) { 

            e.printStackTrace(); 

        } 

    }

   

 

    public static void main(String[] args)throws Exception { 

        SimpleExample example = newSimpleExample(); 

        example.run(); 

    } 

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值