Quartz任务调度快速入门(一)

     关于为什么要使用任务调度我就不说了吧,当你看到这篇文章的时候相信你已经知道了。
     
     快速入门,先说说任务调度三大核心类:JobDetail      Trigger   Scheduler  
     下面一个一个介绍

  1. JobDetail:
    从字面意思来看,JobDetail翻译过来是“工作详述”的意思,何为工作详述:创建一个任务当然需要知道一个任务跑起来都需要什么条件吧,拿下面的代码举例子,我的JobDetail需要知道任务的名字,任务所在的分组,当然,大多数情况下我们项目需要执行的任务不是很多,我的项目里并没有做分组,用的是 Scheduler. DEFAULT_GROUP默认分组,JobDetail的构造方法不止一个,具体大家自己查看API文档。  
    最重要的参数: PushDataJob.  class 这个类是具体要执行的任务来,里面写了你要执行什么任务,比如:发送邮件任务,我的是推送数据的任务。这个参数才是JobDetail的核心。你让我做任务,我要先知道我要做的是什么吧,好的: Job.  class会告诉你。下面结束说
  2. Trigger 
    直译过来是触发器,上面jobDetail接收到了job.class了,知道要做什么了,但是还没有一个时间来告诉系统什么时候做这个任务,那么好说,Trigger正是负责这个任务的,从下面的代码看,我给了Trigger最重要的一个参数 String cron 这是一个时间表达式,cron是来自UNIX的时间机智,具体不做介绍了,
  3. Scheduler
    调度器,调度器负责的是启动停止任务,管理任务。
    看下面这行代码:
    StdSchedulerFactory.  getDefaultScheduler ().scheduleJob(jobDetail, cronTrigger);
    调度器负责把任务组装起来,Scheduler接收的参数是jobDetail 和 cronTrigger 时间表达式,调度器会在指定时间来执行任务
  4. QuartzJob.class是我要写的一个测试类,我现在要打印一条语句
    所有的任务类都需要集成Job接口,重写execute方法,
    Scheduler会在出发时间到达的时候自动调用此方法。这里想写什么就写什么了。execute方法之负责执行任务,不会反回任何信息,官方文档有明确指示。至于任务是否执行成功,还需要我们自己写方法判断。

        
/**
      * corn表达式的任务
      * @param jobName    job名字
      * @param tableName  数据元
      * @param cron       cron表达式
      * @return
      */
      public static boolean addCornJob(String jobName, String tableName, String cron) {

          JobDetail jobDetail = new JobDetail(jobName, Scheduler.DEFAULT_GROUP ,
                   PushDataJob. class );
          
          jobDetail.getJobDataMap().put(SchedulerUtil. TABLENAME , tableName);
          
           try {
              CronTrigger cronTrigger = new CronTrigger(jobName + "Trigger" , Scheduler. DEFAULT_GROUP, cron);
               StdSchedulerFactory. getDefaultScheduler().scheduleJob(jobDetail, cronTrigger);

          } catch (Exception e) {
               return false ;
          }
           return true ;
     }
-----------------------------------我是分割线-----------------------------------------------
public class QuartzJob implements Job {
      // static Log logger = LogFactory.getLog(ScanDirectoryJob.class);

      public void execute(JobExecutionContext context)
               throws JobExecutionException {

          System. out .println("任务:推送执行结束" );
          
     }

最后把我的demo贡献给大家。链接:http://download.csdn.net/detail/leilei107/7125391
我用的是1.5.6,用这么低的版本是因为1.5.6的资料比较多,其实这个版本已经足够我项目功能的需要了。高版本的类会有小小的变动。大家理解了三个核心类的意思后用什么都无所谓了。
中文手册也给了 ,链接:http://download.csdn.net/detail/leilei107/7125431
洋洋洒洒一下午写了这些,希望对大家有帮助!!!!


发布了50 篇原创文章 · 获赞 33 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/leilei107/article/details/22674585