博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz使用-入门使用(java定时任务实现)
阅读量:6809 次
发布时间:2019-06-26

本文共 11855 字,大约阅读时间需要 39 分钟。

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

 

 

 

[java]
  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.   
  5.   
  6. import java.text.SimpleDateFormat;  
  7. import java.util.Date;  
  8.   
  9. public class QuartzTest {  
  10.   
  11.     /** *//** 
  12.      * @param args 
  13.      */  
  14.     public static void main(String[] args) {  
  15.         // TODO Auto-generated method stub  
  16.         SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss");  
  17.         Date d = new Date();  
  18.         String returnstr = DateFormat.format(d);          
  19.           
  20.         TestJob job = new TestJob();  
  21.         String job_name ="11";  
  22.         try {  
  23.             System.out.println(returnstr+ "【系统启动】");  
  24.             QuartzManager.addJob(job_name,job,"0/2 * * * * ?"); //每2秒钟执行一次  
  25.               
  26. //            Thread.sleep(10000);  
  27. //            System.out.println("【修改时间】");  
  28. //            QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?");  
  29. //            Thread.sleep(20000);  
  30. //            System.out.println("【移除定时】");  
  31. //            QuartzManager.removeJob(job_name);  
  32. //            Thread.sleep(10000);  
  33. //              
  34. //            System.out.println("/n【添加定时任务】");  
  35. //            QuartzManager.addJob(job_name,job,"0/5 * * * * ?");  
  36.               
  37.         }  catch (Exception e) {  
  38.             e.printStackTrace();  
  39.         }  
  40.     }  
  41. }  

//<a href="http://lib.csdn.net/base/softwaretest" class='replace_word' title="软件测试知识库" target='_blank' style='color:#df3434; font-weight:bold;'>测试</a>main函数 //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> package quartzPackage; import java.text.SimpleDateFormat; import java.util.Date; public class QuartzTest { /** *//** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date d = new Date(); String returnstr = DateFormat.format(d); TestJob job = new TestJob(); String job_name ="11"; try { System.out.println(returnstr+ "【系统启动】"); QuartzManager.addJob(job_name,job,"0/2 * * * * ?"); //每2秒钟执行一次 // Thread.sleep(10000); // System.out.println("【修改时间】"); // QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?"); // Thread.sleep(20000); // System.out.println("【移除定时】"); // QuartzManager.removeJob(job_name); // Thread.sleep(10000); // // System.out.println("/n【添加定时任务】"); // QuartzManager.addJob(job_name,job,"0/5 * * * * ?"); } catch (Exception e) { e.printStackTrace(); } } }

简单的任务管理类

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

//简单的任务管理类 //QuartzManager.java package quartzPackage; import java.text.ParseException; import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; /** *//** * @Title:Quartz管理类 * * @Description: * * @Copyright: * @author zz 2008-10-8 14:19:01 * @version 1.00.000 * */ public class QuartzManager { private static SchedulerFactory sf = new StdSchedulerFactory(); private static String JOB_GROUP_NAME = "group1"; private static String TRIGGER_GROUP_NAME = "trigger1"; /** *//** * 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名 * @param jobName 任务名 * @param job 任务 * @param time 时间设置,参考quartz说明文档 * @throws SchedulerException * @throws ParseException */ public static void addJob(String jobName,Job job,String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类 //触发器 CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组 trigger.setCronExpression(time);//触发器时间设定 sched.scheduleJob(jobDetail,trigger); //启动 if(!sched.isShutdown()) sched.start(); } /** *//** * 添加一个定时任务 * @param jobName 任务名 * @param jobGroupName 任务组名 * @param triggerName 触发器名 * @param triggerGroupName 触发器组名 * @param job 任务 * @param time 时间设置,参考quartz说明文档 * @throws SchedulerException * @throws ParseException */ public static void addJob(String jobName,String jobGroupName, String triggerName,String triggerGroupName, Job job,String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类 //触发器 CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组 trigger.setCronExpression(time);//触发器时间设定 sched.scheduleJob(jobDetail,trigger); if(!sched.isShutdown()) sched.start(); } /** *//** * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名) * @param jobName * @param time * @throws SchedulerException * @throws ParseException */ public static void modifyJobTime(String jobName,String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); Trigger trigger = sched.getTrigger(jobName,TRIGGER_GROUP_NAME); if(trigger != null){ CronTrigger ct = (CronTrigger)trigger; ct.setCronExpression(time); sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME); } } /** *//** * 修改一个任务的触发时间 * @param triggerName * @param triggerGroupName * @param time * @throws SchedulerException * @throws ParseException */ public static void modifyJobTime(String triggerName,String triggerGroupName, String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); Trigger trigger = sched.getTrigger(triggerName,triggerGroupName); if(trigger != null){ CronTrigger ct = (CronTrigger)trigger; //修改时间 ct.setCronExpression(time); //重启触发器 sched.resumeTrigger(triggerName,triggerGroupName); } } /** *//** * 移除一个任务(使用默认的任务组名,触发器名,触发器组名) * @param jobName * @throws SchedulerException */ public static void removeJob(String jobName) throws SchedulerException{ Scheduler sched = sf.getScheduler(); sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器 sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器 sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务 } /** *//** * 移除一个任务 * @param jobName * @param jobGroupName * @param triggerName * @param triggerGroupName * @throws SchedulerException */ public static void removeJob(String jobName,String jobGroupName, String triggerName,String triggerGroupName) throws SchedulerException{ Scheduler sched = sf.getScheduler(); sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器 sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器 sched.deleteJob(jobName,jobGroupName);//删除任务 } }

 

测试工作类

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

//测试工作类 //TestJob.java package quartzPackage; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class TestJob implements Job { SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = new Date(); String returnstr = DateFormat.format(d); public void execute(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub System.out.println(returnstr+"★★★★★★★★★★★"); } }

 

第三方包

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

 

名称 必须/备注 网址
activation.jar 主要是 JavaMail 要用到
commons-beanutils.jar
commons-collections.jar
commons-dbcp-1.1.jar 是,假如用到数据库作为作业存储
commons-digester.jar 假如你使用了某些插件,就需要它
commons-logging.jar
commons-pool-1.1.jar  
javamail.jar 发送 e-mail 用
jdbc2_0-stdext.jar 是,假如用到数据库作为作业存储
jta.jar 是,假如用到数据库作为作业存储
quartz.jar Quart 框架核心包
servlet.jar 假如使用了Servlet 容器,但容器中应该存在
log4j.jar 是,日志

 

 

 

转载于:https://www.cnblogs.com/gscq073240/articles/6416662.html

你可能感兴趣的文章
利用博客与视频分享和交流知识和经验
查看>>
知道二叉树前序和中序序列打印后序序列
查看>>
js操作dom对象
查看>>
由于未能创建 Microsoft Visual C# 2008 编译器,因此未能打开项目
查看>>
Windows2003服务器安全配置:先关闭不需要的端口(转自)
查看>>
HDU1247 Hat’s Words 【trie树】
查看>>
iOS开发--动画篇之layout动画深入
查看>>
nullpointerxception——处理思路
查看>>
WorldWind源码剖析系列:视景体类Frustum
查看>>
(转)完整java开发中JDBC连接数据库代码和步骤
查看>>
Redis Lua脚本原理
查看>>
有时间测试dism
查看>>
/Users/alamps/AndroidStudioProjects/Demo10ScrollView
查看>>
【Swift】iOS UICollectionView 计算 Cell 大小的陷阱
查看>>
为什么我刚发表的文章变成了“待审核”,csdn有没有官方解释啊
查看>>
Matplotlib 工具包 使用教程索引
查看>>
2016第29周三
查看>>
Maven 与 IntelliJ IDEA 的完美结合
查看>>
Apache
查看>>
Sqli-LABS通关笔录-15
查看>>