zoukankan      html  css  js  c++  java
  • 任务调度 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();
                }
            }
        }
    }
  • 相关阅读:
    【转】Windows7 下安装 JDK 7 时版本冲突问题解决
    【转】Android开发之旅:环境搭建及HelloWorld
    android开发板
    win7重装系统的配置步骤
    caffe 源码阅读
    caffe 源码阅读
    Python 图像处理: 生成二维高斯分布蒙版
    学习 protobuf(一)—— ubuntu 下 protobuf 2.6.1 的安装
    学习 protobuf(一)—— ubuntu 下 protobuf 2.6.1 的安装
    CMake 添加头文件目录,链接动态、静态库(添加子文件夹)
  • 原文地址:https://www.cnblogs.com/nww57/p/5192145.html
Copyright © 2011-2022 走看看