Quartz使用-入门使用(java定时任务实现)

注:这里使用的是Quartz1.6.5版本(包:quartz-1.6.5.jar)

[java] view plain copy

  1. //<a href="http://lib.csdn.net/base/softwaretest" class=‘replace_word‘ title="软件测试知识库" target=‘_blank‘ style=‘color:#df3434; font-weight:bold;‘>测试</a>main函数
  2. //QuartzTest.<a href="http://lib.csdn.net/base/javase" class=‘replace_word‘ title="Java SE知识库" target=‘_blank‘ style=‘color:#df3434; font-weight:bold;‘>Java</a>
  3. package quartzPackage;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. public class QuartzTest {
  7. /** *//**
  8. * @param args
  9. */
  10. public static void main(String[] args) {
  11. // TODO Auto-generated method stub
  12. SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
  13. Date d = new Date();
  14. String returnstr = DateFormat.format(d);
  15. TestJob job = new TestJob();
  16. String job_name ="11";
  17. try {
  18. System.out.println(returnstr+ "【系统启动】");
  19. QuartzManager.addJob(job_name,job,"0/2 * * * * ?"); //每2秒钟执行一次
  20. //            Thread.sleep(10000);
  21. //            System.out.println("【修改时间】");
  22. //            QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?");
  23. //            Thread.sleep(20000);
  24. //            System.out.println("【移除定时】");
  25. //            QuartzManager.removeJob(job_name);
  26. //            Thread.sleep(10000);
  27. //
  28. //            System.out.println("/n【添加定时任务】");
  29. //            QuartzManager.addJob(job_name,job,"0/5 * * * * ?");
  30. }  catch (Exception e) {
  31. e.printStackTrace();
  32. }
  33. }
  34. }

简单的任务管理类

[java] view plain copy

  1. //简单的任务管理类
  2. //QuartzManager.java
  3. package quartzPackage;
  4. import java.text.ParseException;
  5. import org.quartz.CronTrigger;
  6. import org.quartz.Job;
  7. import org.quartz.JobDetail;
  8. import org.quartz.Scheduler;
  9. import org.quartz.SchedulerException;
  10. import org.quartz.SchedulerFactory;
  11. import org.quartz.Trigger;
  12. import org.quartz.impl.StdSchedulerFactory;
  13. /** *//**
  14. * @Title:Quartz管理类
  15. *
  16. * @Description:
  17. *
  18. * @Copyright:
  19. * @author zz  2008-10-8 14:19:01
  20. * @version 1.00.000
  21. *
  22. */
  23. public class QuartzManager {
  24. private static SchedulerFactory sf = new StdSchedulerFactory();
  25. private static String JOB_GROUP_NAME = "group1";
  26. private static String TRIGGER_GROUP_NAME = "trigger1";
  27. /** *//**
  28. *  添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
  29. * @param jobName 任务名
  30. * @param job     任务
  31. * @param time    时间设置,参考quartz说明文档
  32. * @throws SchedulerException
  33. * @throws ParseException
  34. */
  35. public static void addJob(String jobName,Job job,String time)
  36. throws SchedulerException, ParseException{
  37. Scheduler sched = sf.getScheduler();
  38. JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类
  39. //触发器
  40. CronTrigger  trigger =
  41. new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组
  42. trigger.setCronExpression(time);//触发器时间设定
  43. sched.scheduleJob(jobDetail,trigger);
  44. //启动
  45. if(!sched.isShutdown())
  46. sched.start();
  47. }
  48. /** *//**
  49. * 添加一个定时任务
  50. * @param jobName 任务名
  51. * @param jobGroupName 任务组名
  52. * @param triggerName  触发器名
  53. * @param triggerGroupName 触发器组名
  54. * @param job     任务
  55. * @param time    时间设置,参考quartz说明文档
  56. * @throws SchedulerException
  57. * @throws ParseException
  58. */
  59. public static void addJob(String jobName,String jobGroupName,
  60. String triggerName,String triggerGroupName,
  61. Job job,String time)
  62. throws SchedulerException, ParseException{
  63. Scheduler sched = sf.getScheduler();
  64. JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类
  65. //触发器
  66. CronTrigger  trigger =
  67. new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组
  68. trigger.setCronExpression(time);//触发器时间设定
  69. sched.scheduleJob(jobDetail,trigger);
  70. if(!sched.isShutdown())
  71. sched.start();
  72. }
  73. /** *//**
  74. * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
  75. * @param jobName
  76. * @param time
  77. * @throws SchedulerException
  78. * @throws ParseException
  79. */
  80. public static void modifyJobTime(String jobName,String time)
  81. throws SchedulerException, ParseException{
  82. Scheduler sched = sf.getScheduler();
  83. Trigger trigger =  sched.getTrigger(jobName,TRIGGER_GROUP_NAME);
  84. if(trigger != null){
  85. CronTrigger  ct = (CronTrigger)trigger;
  86. ct.setCronExpression(time);
  87. sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME);
  88. }
  89. }
  90. /** *//**
  91. * 修改一个任务的触发时间
  92. * @param triggerName
  93. * @param triggerGroupName
  94. * @param time
  95. * @throws SchedulerException
  96. * @throws ParseException
  97. */
  98. public static void modifyJobTime(String triggerName,String triggerGroupName,
  99. String time)
  100. throws SchedulerException, ParseException{
  101. Scheduler sched = sf.getScheduler();
  102. Trigger trigger =  sched.getTrigger(triggerName,triggerGroupName);
  103. if(trigger != null){
  104. CronTrigger  ct = (CronTrigger)trigger;
  105. //修改时间
  106. ct.setCronExpression(time);
  107. //重启触发器
  108. sched.resumeTrigger(triggerName,triggerGroupName);
  109. }
  110. }
  111. /** *//**
  112. * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
  113. * @param jobName
  114. * @throws SchedulerException
  115. */
  116. public static void removeJob(String jobName)
  117. throws SchedulerException{
  118. Scheduler sched = sf.getScheduler();
  119. sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器
  120. sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器
  121. sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务
  122. }
  123. /** *//**
  124. * 移除一个任务
  125. * @param jobName
  126. * @param jobGroupName
  127. * @param triggerName
  128. * @param triggerGroupName
  129. * @throws SchedulerException
  130. */
  131. public static void removeJob(String jobName,String jobGroupName,
  132. String triggerName,String triggerGroupName)
  133. throws SchedulerException{
  134. Scheduler sched = sf.getScheduler();
  135. sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器
  136. sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器
  137. sched.deleteJob(jobName,jobGroupName);//删除任务
  138. }
  139. }

测试工作类

[java] view plain copy

  1. //测试工作类
  2. //TestJob.java
  3. package quartzPackage;
  4. import java.text.SimpleDateFormat;
  5. import java.util.Date;
  6. import org.quartz.Job;
  7. import org.quartz.JobExecutionContext;
  8. import org.quartz.JobExecutionException;
  9. public class TestJob implements Job {
  10. SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  11. Date d = new Date();
  12. String returnstr = DateFormat.format(d);
  13. public void execute(JobExecutionContext arg0) throws JobExecutionException {
  14. // TODO Auto-generated method stub
  15. System.out.println(returnstr+"★★★★★★★★★★★");
  16. }
  17. }

第三方包

通过测试。一个简单任务只需要以下几个包:commons-beanutils.jar、commons-collections.jar、commons-logging.jar、commons-digester.jar、quartz.jar即可

名称 必须/备注 网址
activation.jar 主要是 JavaMail 要用到 http://java.sun.com/products/javabeans/glasgow/jaf.html
commons-beanutils.jar http://jakarta.apache.org/commons/beanutils
commons-collections.jar http://jakarta.apache.org/commons/collections
commons-dbcp-1.1.jar 是,假如用到数据库作为作业存储 http://jakarta.apache.org/commons/dbcp
commons-digester.jar 假如你使用了某些插件,就需要它
commons-logging.jar http://jakarta.apache.org/commons/logging/
commons-pool-1.1.jar   http://jakarta.apache.org/commons/pool/
javamail.jar 发送 e-mail 用 http://java.sun.com/products/javamail/
jdbc2_0-stdext.jar 是,假如用到数据库作为作业存储 http://java.sun.com/products/jdbc/
jta.jar 是,假如用到数据库作为作业存储 http://java.sun.com/products/jta/database
quartz.jar Quart 框架核心包
servlet.jar 假如使用了Servlet 容器,但容器中应该存在 http://java.sun.com/products/servlet/
log4j.jar 是,日志 http://logging.apache.org/
时间: 2024-10-20 16:57:57

Quartz使用-入门使用(java定时任务实现)的相关文章

atititt.java定时任务框架选型Spring Quartz 注解总结

atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增加context,task命名空间xml: 2 2.2. 增加xsi:schemaLocation valide 2 2.3. 我们的task任务扫描注解in spr.xml 2 2.4. 设置运行方法 3 2.5. 设置输出日志 3 3. 运行测试sprX走ok兰. 4 4. Quartz Sch

定时器(Quartz)快速入门

Quartz概述 Quartz中的触发器 Quartz中提供了两种触发器,分别是CronTrigger和SimpleTrigger. SimpleTrigger 每 隔若干毫秒来触发纳入进度的任务.因此,对于夏令时来说,根本不需要做任何特殊的处理来"保持进度".它只是简单地保持每隔若干毫秒来触发一次,无论你的 SimpleTrigger每隔10秒触发一次还是每隔15分钟触发一次,还是每隔24小时触发一次. CronTrigger 在特定"格林日历"时刻触发纳入进程的

Java定时任务的三种实现方式

前言 现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基本要求了. 很多业务需求的实现都离不开定时任务,例如,每月一号,移动将清空你上月未用完流量,重置套餐流量,以及备忘录提醒.闹钟等功能. Java 系统中主要有三种方式来实现定时任务: Timer和TimerTask ScheduledExecutorService 三方框架 Quartz 下面我们一个个来看. 1> Timer和TimerTask 先看一个小 demo,

第五届蓝桥杯练习题 - 入门练习Java解题代码

>>入门训练 圆的面积 时间限制:1.0s   内存限制:256.0MB 锦囊1 锦囊2 锦囊3 问题描述 给定圆的半径r,求圆的面积. 输入格式 输入包含一个整数r,表示圆的半径. 输出格式 输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积. 说明:在本题中,输入是一个整数,但是输出是一个实数. 对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位数都是不行的,都会被认为错误. 实数输出的问题

Java定时任务器

java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日2:00执行方法 ***/ calendar.set(Calendar.HOUR_OF_DA

Java定时任务示例

package com.my.timer; import java.util.Date; import java.util.TimerTask; public class myTask extends TimerTask { /** * 定时任务调用的方法,即处理业务的方法 */ @Override public void run() { System.out.println("定时任务执行了:" + new Date().toLocaleString()); } } package

RPC学习----Thrift快速入门和Java简单示例

一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. 二.什么是Thrift? thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和

java定时任务类Timer和TimerTask用法详解

原文:java定时任务类Timer和TimerTask用法详解 代码下载地址:http://www.zuidaima.com/share/1550463277550592.htm package com.zuidaima.util; import java.io.IOException; import java.util.Timer; import test.MyTask; /* * 本类给出了使用Timer和TimerTaske的主要方法,其中包括定制任务,添加任务 * 退出任务,退出定时器.

java定时任务,每天定时执行任务

java定时任务,每天定时执行任务. public class TimerManager { //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日2:00执行方法 ***/ calendar.set(Calendar.HOUR_OF_DAY, 2); calend