问答详情
源自:2-2 浅谈Job&JobDetail

HelloJob的实例是怎么创建出来的?

先定义了一个HellJob的任务类,然后创建JobDetail的实例与此类进行绑定,在然后scheduler调用什么方法创建的实例呢?

提问者:我叫杨云龙 2018-03-15 08:21

个回答

  • 坚信勤能补拙
    2018-03-15 15:29:11
    已采纳

    //启动任务调度程序,内部机制是线程的启动
      scheduler.start();

    具体代码如下,供参考:

    //从调度程序工厂获取一个调度程序的实例
               Scheduler  scheduler  = StdSchedulerFactory.getDefaultScheduler();

               //显示调度程序的名称(这里会展示我们在quartz.properties文件中的名称)
               System.out.println("scheduleName = " + scheduler.getSchedulerName());


               /** 重要:
                *  定义一个job,并绑定到我们自定义的HelloJob的class对象
                *  这里并不会马上创建一个HelloJob实例,实例创建是在scheduler安排任务触发执行时创建的
                *  这种机制也为后面使用Spring集成提供了便利
                */
                 JobDetail job = newJob(HelloJob.class)                  .withIdentity("job1", "group1")                  .build();

                 // 声明一个触发器,现在就执行(schedule.start()方法开始调用的时候执行);并且每间隔2秒就执行一次
                 Trigger trigger = newTrigger()                  .withIdentity("trigger1", "group1")                  .startNow()                        .withSchedule(simpleSchedule()                          .withIntervalInSeconds(2)                          .repeatForever())            
                     .build();

                 // 告诉quartz使用定义的触发器trigger安排执行任务job
                 scheduler.scheduleJob(job, trigger);

               //启动任务调度程序,内部机制是线程的启动
               scheduler.start();

               //关闭任务调度程序,如果不关闭,调度程序schedule会一直运行着
               //scheduler.shutdown();