网赚论坛

标题: 使用Quartz实现作业调度(二) [打印本页]

作者: wtwtwwt    时间: 2017-9-13 19:57
标题: 使用Quartz实现作业调度(二)
 前面使用了Quartz 1.6来实现作业调度,但是只能指定运行的次数,在实际运用中就有些不足了。所以我们这次使用Quartz(http://dream.javaoop.cn/articles/**-tirgger-runner.html)提供得一种表达式,这种表达式可以灵活定义作业调度得时间、周期等等。
  源码如下:
  **Quartz.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.;
  import org.quartz.ExecutionContext;
  import org.quartz.ExecutionException;
  /**
  * 读取D盘文件将其内容写入C盘文件中
  * @author JavaChaos
  *
  */
  public class **Quartz implements {
  @Override
  public void execute(ExecutionContext context)
  throws ExecutionException {
  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.Detail;
  import org.quartz.Scheduler;
  import org.quartz.SchedulerException;
  import org.quartz.Schedule**ctory;
  import org.quartz.impl.StdSchedule**ctory;
  /**
  * 每隔5秒钟检查D盘有无test.txt,如果有则复制到C盘
  *
  * @author JavaChaos
  *
  */
  public class CronTriggerRunner {
  public void task() throws SchedulerException {
  // 初始化一个调度工厂
  Schedule**ctory schedule**ctory = new StdSchedule**ctory();
  // 初始化一个调度器
  Scheduler scheduler = schedule**ctory.getScheduler();
  // Detail对象相当于你要调度得任务
  Detail Detail = new Detail(”Detail-c1″,
  ”DetailGroup-s1″, **Quartz.class);
  // CronTrigger对象相当于你的配置信息
  CronTrigger cronTrigger = new CronTrigger(”cronTrigger”,
  ”triggerGroup2″);
  try {
  // cron表达式
  CronExpression expression = new CronExpression(”0/5 * * * * ?”);// 每隔5秒执行一次。表达式很强大
  // 可以阅读一下相关帮助文档
  // 把Cron表达式传给CronTrigger
  cronTrigger.setCronExpression(expression);
  // 传入参数
  scheduler.schedule(Detail, 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();
  }
  }
  }
  这个例子将上篇日志例子中得**Trigger对象换成了CronTrigger对象。CronExpression类提供得表达式,你可以自己定义运行得时间、周期。更多得使用方法可以阅读相关帮助文档。
  下一次会介绍将Quartz整合入Spring中。Srping估计都不会陌生,两者整合灵活性、安全性有了更好得提升。




欢迎光临 网赚论坛 (http://www.caifuba.net/) Powered by Discuz! X3.1