Quartz简单了解

什么是Quartz

    1. Quartz是一个开源的作业调度框架,由java编写,在.NET平台为Quartz.Net,通过Quart可以快速完成任务调度的工作.
    2. Quartz能干什么/应用场景
      1. 如网页游戏中挂机自动修炼如8个小时,人物相关数值进行成长,当使用某道具后,时间减少到4个小时,人物对应获得成长值.这其中就涉及到了Scheduler的操作,定时对人物进行更新属性操作,更改定时任务执行时间.
      2. 网页游戏中会大量涉及到Scheduler的操作,有兴趣的朋友可自行联想.
      3. 企业中如每天凌晨2点触发数据同步、发送Email等操作
    3. 同类框架对比
      1. TimeTask TimeTask在Quartz前还是显得过于简单、不完善,不能直接满足开发者的较为复杂的应用场景.
    4. 资源
      1. 官网:http://www.quartz-scheduler.org/
      2. 下载:http://www.quartz-scheduler.org/downloads
      3. maven pom<dependency>

  <groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>

  5.demo

二、首先,要创建一个任务,quartz规定任务必须实现org.quarta.Job接口,此接口就一个方法execute,这个方法就是任务执行的时候允许的方法,具体的业务实现在这个方法里,我这里只进行了简单的打印。

 

package com.tiexiu.myScheduler;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class MyJob implements Job{

    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        System.out.println("Hello World!");
    }

}

三、创建完任务之后,我们还要创建一个包含任务信息的jobDetail,一个管理任务执行的促发器trigger,最后就是调度任务。

package com.tiexiu.myScheduler;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class MyJobTest {
    public static void main(String[] args) throws SchedulerException {
        //获取调度工厂
        SchedulerFactory sf = new StdSchedulerFactory();
        //获得一个scheduler(调度程序)
        Scheduler scheduler = sf.getScheduler();
        //获得一个jobDetail(工作细节)
        JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("MyJob").build();
        //获得一个trigger(触发器)
        Trigger trigger = TriggerBuilder.newTrigger().
                withIdentity("trigger1", "group1").startNow().
                withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(1) //时间隔多久触发
                        .withRepeatCount(10))     //触发多少次
                        .build();  
        //把任务和触发器放到scheduler中    
        scheduler.scheduleJob(job,trigger);
        //开始任务调度
        scheduler.start();
    }
}

这样我们就做了一个任务调度,运行时会每隔一秒再次运行job里面的调度,运行10次。

未完待续~~

posted @ 2018-03-12 23:40  大刘同学  阅读(158)  评论(0编辑  收藏  举报