zoukankan      html  css  js  c++  java
  • quartzjava计划任务 quartzall1.8.5.jar

      Quartz是一个功能强大的java计划任务系统,它通过简单的配置和代码完成各种计划人数,定时单机应用到分布式的计算机间远程任务调度,都可以做到。      quartz是一个按照设定的时间规则来调度作业的调度器,比如可以设定每30s启动一个Job,但如果Job在30s内还未完成,那么quartz默认情况下还是按照设定的周期启动新的Job线程      今天刚看了一点资料,做一下笔记。      地址:http://www.opensymphony.com/quartz/       例子:

    Java代码 复制代码 收藏代码
    1.        
    2. import java.util.ArrayList; 
    3. import java.util.Date; 
    4.  
    5. import org.quartz.JobDetail; 
    6. import org.quartz.Scheduler; 
    7. import org.quartz.SchedulerException; 
    8. import org.quartz.SchedulerFactory; 
    9. import org.quartz.Trigger; 
    10. import org.quartz.TriggerUtils; 
    11. import org.quartz.impl.StdSchedulerFactory; 
    12.  
    13. publicclass TimerTest { 
    14.  
    15.     publicstaticvoid main(String... strings) { 
    16.         SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); 
    17.  
    18.         Scheduler sched; 
    19.         try
    20.  
    21.             // sched = schedFact.getScheduler(); 
    22.             sched = StdSchedulerFactory.getDefaultScheduler(); 
    23.  
    24.             JobDetail jobDetail = new JobDetail("myJob", // job name 
    25.                                                 sched.DEFAULT_GROUP, // job group (you can also specify 'null' to 
    26.                                                 // use the default group) 
    27.                                                 TestJob.class); // the java class to execute 
    28.  
    29.             jobDetail.getJobDataMap().put("jobSays", "Hello World!"); 
    30.             jobDetail.getJobDataMap().put("myFloatValue", 3.141f); 
    31.             jobDetail.getJobDataMap().put("myStateData", new ArrayList()); 
    32.  
    33.             Trigger trigger = TriggerUtils.makeDailyTrigger(0, 1); 
    34.             trigger.setStartTime(new Date()); 
    35.             trigger.setName("myTrigger"); 
    36.  
    37. //Add the given JobDetail to the Scheduler,  
    38. //and associate the given Trigger with it. 
    39.             sched.scheduleJob(jobDetail, trigger);             sched.start(); 
    40.             // sched.shutdown(); 
    41.  
    42.         } catch (SchedulerException e) { 
    43.             // TODO Auto-generated catch block 
    44.             e.printStackTrace(); 
    45.         } 
    46.     } 
          
    import java.util.ArrayList;
    import java.util.Date;
    
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.TriggerUtils;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class TimerTest {
    
        public static void main(String... strings) {
            SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
    
            Scheduler sched;
            try {
    
                // sched = schedFact.getScheduler();
                sched = StdSchedulerFactory.getDefaultScheduler();
    
                JobDetail jobDetail = new JobDetail("myJob", // job name
                                                    sched.DEFAULT_GROUP, // job group (you can also specify 'null' to
                                                    // use the default group)
                                                    TestJob.class); // the java class to execute
    
                jobDetail.getJobDataMap().put("jobSays", "Hello World!");
                jobDetail.getJobDataMap().put("myFloatValue", 3.141f);
                jobDetail.getJobDataMap().put("myStateData", new ArrayList());
    
                Trigger trigger = TriggerUtils.makeDailyTrigger(0, 1);
                trigger.setStartTime(new Date());
                trigger.setName("myTrigger");
    
    //Add the given JobDetail to the Scheduler, 
    //and associate the given Trigger with it.
                sched.scheduleJob(jobDetail, trigger);             sched.start();
                // sched.shutdown();
    
            } catch (SchedulerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    Java代码 复制代码 收藏代码
    1. import java.util.ArrayList; 
    2. import java.util.Date; 
    3.  
    4. import org.quartz.Job; 
    5. import org.quartz.JobDataMap; 
    6. import org.quartz.JobExecutionContext; 
    7. import org.quartz.JobExecutionException; 
    8.  
    9. publicclass TestJob implements Job { 
    10.  
    11.     publicvoid execute(JobExecutionContext context) throws JobExecutionException { 
    12.         // TODO Auto-generated method stub 
    13.         System.out.println("........................................"); 
    14.         String instName = context.getJobDetail().getName(); 
    15.         String instGroup = context.getJobDetail().getGroup(); 
    16.  
    17.         JobDataMap dataMap = context.getJobDetail().getJobDataMap(); 
    18.  
    19.         String jobSays = dataMap.getString("jobSays"); 
    20.         float myFloatValue = dataMap.getFloat("myFloatValue"); 
    21.         ArrayList state = (ArrayList) dataMap.get("myStateData"); 
    22.         state.add(new Date()); 
    23.  
    24.         System.out.println("Instance " + instName + " of DumbJob says: " + jobSays); 
    25.     } 
    26.  
    import java.util.ArrayList;
    import java.util.Date;
    
    import org.quartz.Job;
    import org.quartz.JobDataMap;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class TestJob implements Job {
    
        public void execute(JobExecutionContext context) throws JobExecutionException {
            // TODO Auto-generated method stub
            System.out.println("........................................");
            String instName = context.getJobDetail().getName();
            String instGroup = context.getJobDetail().getGroup();
    
            JobDataMap dataMap = context.getJobDetail().getJobDataMap();
    
            String jobSays = dataMap.getString("jobSays");
            float myFloatValue = dataMap.getFloat("myFloatValue");
            ArrayList state = (ArrayList) dataMap.get("myStateData");
            state.add(new Date());
    
            System.out.println("Instance " + instName + " of DumbJob says: " + jobSays);
        }
    
    }

    运行结果如同http://www.opensymphony.com/quartz/wikidocs/QuickStart.html所说的,显示了一堆红色的信息,说明程序读取了默认的Quartz配置,同时已经启动了。     问题1:TestJob 中定义的一些输出信息怎么什么都没有呢,定义了1分钟,但是没有输出?    仔细看了例子代码,发现居然范了一个低级错误,使用了makeDailyTrigger,该方法是定时,每天几点几分进行计划任务,修改为

    Java代码 复制代码 收藏代码
    1. Trigger trigger = TriggerUtils.makeSecondlyTrigger(3); 
    Trigger trigger = TriggerUtils.makeSecondlyTrigger(3);

         之后没三秒钟就打印:

    Java代码 复制代码 收藏代码
    1. ........................................ 
    2. ance myJob of DumbJob says: Hello World! 
        ........................................
    Instance myJob of DumbJob says: Hello World!

         TriggerUtils内还有很多其他有用的方法,看quartz API
    再增加一个JOB,只需要增加一个job类,jobDetail,Trigger两对象,调用scheduleJob方法就可以加入调度队列了。        这只是一个简单的例子,quartz还有很复杂的功能,继续学习。

    引用

    分享到:     
    评论
    5 楼    hacker_zxf    2012-04-09           
    最近再去看quartz实现,job都是new出来的,如果需要自定义job或者干一些私密的事情,可以自定义jobFactory ,塞如scheduler中,  还是很强大的, 可惜扩展新不是非常好,而且版本兼容也不好。
    4 楼    hacker_zxf    2012-04-09           
    quartz 的扩展型做的不好,本来试图将表达式扩展成支持毫秒,但是他的实现默认是每个1秒钟运行一次,判断是否满足时间表达式, 且这个1秒是内部写死,无法扩展,  要做,只能自己写整套的,  悲剧,最后只能选择毫秒用另一个参数了。
    3 楼    piaoxue_x    2011-12-01           
    嗯,看看。。。。貌似不错,谢谢了。。。
    2 楼    673341766    2011-10-14           
    麻烦你看一下  红色的信息是报错好吧.
    1 楼    linsea    2009-03-17           
    自定一个时间表如第每天1点,3点,8点,20点,23:30点等一些时间点,Quartz 是否能按照这个时间表执行同一个计算任务?而且这个时间表是可以随时更改配置更新的.
  • 相关阅读:
    Python3 collections模块的使用
    基于python的分治法和例题
    docker容器间通信 (共用宿主机)
    HTML之form表单ENCTYPE属性解析
    搭建基于码云gitee平台代码自动部署
    centos7下docker搭建nginx+phpfpm环境
    mysql主从配置
    centos7升级自带mariadb
    linux下安装docker
    centos7安装postgreSql11
  • 原文地址:https://www.cnblogs.com/guanghuiqq/p/2609452.html
Copyright © 2011-2022 走看看