任务调度 Quartz 学习(一) SimpleTrigger

概述:

  在实际开发过程中,会遇到很多任务调度的需求。

  比如说:某网站要在每周一上午9点更新网站数据,并发邮件通知用户;

  再比如某论坛需求:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务。

  这时就可以使用quartz来实现了。

几个重要的类:

  ●Job(接口)

public interface Job {
    void execute(JobExecutionContext var1) throws JobExecutionException;
}

  JobDetail: 真正的任务内容,任务本身是集成Job接口的,但是真正的任务是JobBuilder通过反射的方式实例化的,
  Trigger: 触发器,定义任务应当开始的时间,主要分为两类SimpleTrigger,CronTrigger;CronTrigger主要用于处理quartz表达式定义的任务,比如每个月20号,每个星期一之类的。
  Scheduler:任务调度器, 计划执行者,现在我们有了要做的内容(jobdetail),有了要做的时间(trigger),接下来,就把这两个内容填充到计划任务Scheduler对象里面,到了时间它就可以自动运行了

Example:

  

public class MyJob implements Job{

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("测试quartz"+new Date());
    }


    //SimpleTrigger
    public static void simpleTrigger(){

        //获得schedulerFactory用来产生scheduler对象
        SchedulerFactory sf=new StdSchedulerFactory();
        Scheduler sche=null;

        //定义一个job,并绑定自己定义的MyJob类;利用反射实例化一个JobDetail类
        JobDetail jobDetail= JobBuilder.newJob(MyJob.class).withIdentity("test_job1","group1").build();

        //定义一个触发器
        Trigger trigger= TriggerBuilder.newTrigger().withIdentity("trigger_1","group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(5) //重复间隔
                        .withRepeatCount(5)) //重复次数
                .build();

        try {
            //利用schedulerFactory产生scheduler对象
            sche=sf.getScheduler();
            //将jobDetail和trigger放入scheduler
            sche.scheduleJob(jobDetail,trigger);
            sche.start();

        } catch (SchedulerException e) {
            e.printStackTrace();
        }
        finally{
            try {
                sche.shutdown(true);  //关闭调度
            } catch (SchedulerException e) {
                e.printStackTrace();
            }
        }
    }
}

 

posted @ 2016-02-16 11:15  wandy丶  阅读(806)  评论(0编辑  收藏  举报