使用Quartz实现作业调度(二)

来源:互联网 发布:视频综合平台软件 编辑:程序博客网 时间:2024/06/05 19:59
  前面使用了Quartz 1.6来实现作业调度,但是只能指定运行的次数,在实际运用中就有些不足了。所以我们这次使用Quartz提供得一种表达式,这种表达式可以灵活定义作业调度得时间、周期等等。

源码如下:

SimpleQuartzJob.java

package cn.javaoop.dream.quartz;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
 * 读取D盘文件将其内容写入C盘文件中
 * @author JavaChaos
 *
 */
public class SimpleQuartzJob implements Job {

 @Override
 public void execute(JobExecutionContext context)
   throws JobExecutionException {
  System.out.println(context.getTrigger().getName());
  try {
   File file = new File(”D:/test.txt”);
   if (file.canExecute()) {
    FileWriter writer = new FileWriter(”C:/test.txt”);// 写入C盘文件
    FileReader reader = new FileReader(”D:/test.txt”);// 读取D盘文件
    writer.write(reader.read());
    System.out.println(”写入成功”);
   } else {
    System.out.println(”文件不存在”);
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

CronTriggerRunner.java

package cn.javaoop.dream.quartz;

import java.text.ParseException;

import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

/**
 * 每隔5秒钟检查D盘有无test.txt,如果有则复制到C盘
 *
 * @author JavaChaos
 *
 */
public class CronTriggerRunner {
 public void task() throws SchedulerException {
  // 初始化一个调度工厂
  SchedulerFactory schedulerFactory = new StdSchedulerFactory();
  // 初始化一个调度器
  Scheduler scheduler = schedulerFactory.getScheduler();
  // JobDetail对象相当于你要调度得任务
  JobDetail jobDetail = new JobDetail(”jobDetail-c1″,
    ”jobDetailGroup-s1″, SimpleQuartzJob.class);
  // CronTrigger对象相当于你的配置信息
  CronTrigger cronTrigger = new CronTrigger(”cronTrigger”,
    ”triggerGroup2″);
  try {
   // cron表达式
   CronExpression expression = new CronExpression(”0/5 * * * * ?”);// 每隔5秒执行一次。表达式很强大
   // 可以阅读一下相关帮助文档
   // 把Cron表达式传给CronTrigger
   cronTrigger.setCronExpression(expression);
   // 传入参数
   scheduler.scheduleJob(jobDetail, cronTrigger);
   // 开始进行调度
   scheduler.start();
  } catch (ParseException e) {
   e.printStackTrace();
  }
 }

 public static void main(String[] args) {
  try {
   CronTriggerRunner runner = new CronTriggerRunner();
   runner.task();
  } catch (SchedulerException e) {
   e.printStackTrace();
  }
 }
}

    这个例子将上篇日志例子中得SimpleTrigger对象换成了CronTrigger对象。CronExpression类提供得表达式,你可以自己定义运行得时间、周期。更多得使用方法可以阅读相关帮助文档。
    下一次会介绍将Quartz整合入Spring中。Srping估计都不会陌生,两者整合灵活性、安全性有了更好得提升。

本人博客:dream.javaoop.cne

原创粉丝点击