<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    胖熊熊

    得到多少又失去了什么

    Quartz使用(一)-入門使用

    很久沒有用Quartz了,居然忘記如何使用了,這里趕緊記錄下
    對Quartz就不說明了,直接上代碼
    注:這里使用的是Quartz1.5.2版本(包:quartz-1.5.2.jar)

    簡單的任務管理類


    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);//刪除任務
       }

    }


    測試工作類
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;

    public class TestJob implements Job {

        
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
            
    // TODO Auto-generated method stub
            System.out.println("★★★★★★★★★★★");
        }


    }

    測試類
    public class QuartzTest {

        
    /**
         * 
    @param args
         
    */

        
    public static void main(String[] args) {
            
    // TODO Auto-generated method stub
            TestJob job = new TestJob();
            String job_name 
    ="11";
            
    try {
                System.out.println(
    "【系統啟動】");
                QuartzManager.addJob(job_name,job,
    "0/5 * * * * ?");
                
                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();
            }

        }

    }

    posted on 2008-10-08 15:40 fatbear 閱讀(15356) 評論(8)  編輯  收藏 所屬分類: JAVA

    評論

    # re: Quartz使用(一)-入門使用 2009-04-15 09:13 lynn169

    寫的很好,還有一種情況,如果一個任務修改了,怎么辦,一定要先刪除再重新添加一個任務嗎  回復  更多評論   

    # re: Quartz使用(一)-入門使用 2009-04-15 16:55 fatbear

    @lynn169
    要看此任務執行的內容是如何實現的
    1.任務執行內容是通過編碼實現
    這種情況通過類重載后,需要刪除再重新添加
    2.任務執行內容是通過調用其他實現的(如數據庫存儲過程或web services服務等)
    這種情況是不用刪除再重新添加
      回復  更多評論   

    # re: Quartz使用(一)-入門使用 2009-04-23 18:00 asd

    asda   回復  更多評論   

    # re: Quartz使用(一)-入門使用 2009-04-23 18:12 asd

    樓主好,
    樓主的程序我已試過,在修改時間后,新的時間并沒有馬上有效,而是要等到在舊的時間觸發后才能在新的時間觸發任務,我改了一點測試條件:
    System.out.println("start time");
    QuartzManager.addJob(job_name, job, "0,10,20,30,40,50 * * * * ?");
    Thread.sleep(10000);

    System.out.println("modify time");
    QuartzManager.modifyJobTime(job_name, "5,15,25,35,55,45 * * * * ?");
    結果像這樣:
    start time
    $$$Thu Apr 23 18:03:30 CST 2009
    modify time
    $$$Thu Apr 23 18:03:40 CST 2009 //還是舊的時間規則。
    $$$Thu Apr 23 18:03:45 CST 2009
    $$$Thu Apr 23 18:03:55 CST 2009
    $$$Thu Apr 23 18:04:05 CST 2009

    可我想得到像這樣的結果:
    start time
    $$$Thu Apr 23 18:03:30 CST 2009
    modify time
    $$$Thu Apr 23 18:03:35 CST 2009
    //希望新的時間規則能立即生效,如果第35秒已過,希望下次觸發事件是第45秒
    $$$Thu Apr 23 18:03:45 CST 2009
    $$$Thu Apr 23 18:03:55 CST 2009
    $$$Thu Apr 23 18:04:05 CST 2009
    望樓主賜教,謝謝?這是否是quartz的內部機制?  回復  更多評論   

    # re: Quartz使用(一)-入門使用 2009-09-28 17:27 EricLee

    哥們,你這個代碼,修改時間并沒有發生變化呢,我在測試你的代碼的時候,同時查看數據庫,在修改時間的時候,數據庫一直沒有改變!!!  回復  更多評論   

    # re: Quartz使用(一)-入門使用[未登錄] 2010-01-20 17:02 roger

    確實,modifyJobTime()方法根本就不起作用  回復  更多評論   

    # re: Quartz使用(一)-入門使用[未登錄] 2011-09-08 09:57 zy

    坑爹  回復  更多評論   

    # re: Quartz使用(一)-入門使用 2014-05-17 23:04 zuidaima

    java quartz代碼下載:http://www.zuidaima.com/share/search.htm?key=quartz  回復  更多評論   

    主站蜘蛛池模板: 成人免费a级毛片| 在线免费观看韩国a视频| 亚洲人成色77777| 一本一道dvd在线观看免费视频 | 久久久久亚洲AV无码专区网站| 香蕉视频亚洲一级| 日日操夜夜操免费视频| 亚洲国产成人久久精品大牛影视| 蜜桃精品免费久久久久影院| 亚洲国产欧美国产综合一区 | 亚洲欧美成人av在线观看| 女人18毛片水真多免费播放| 亚洲狠狠色丁香婷婷综合| 免费在线观看日韩| 国产精品免费久久久久电影网| 亚洲自偷自偷图片| 国产无遮挡无码视频免费软件| 亚洲人成电影在在线观看网色| 最新黄色免费网站| 亚洲国产精品无码久久| 亚洲精品岛国片在线观看| 99久久成人国产精品免费| 噜噜噜亚洲色成人网站∨| 99久久这里只精品国产免费| 鲁死你资源站亚洲av| 国产成人亚洲精品91专区手机| 午夜视频免费在线观看| 免费人成大片在线观看播放| 国产精品亚洲综合专区片高清久久久| 97国产在线公开免费观看| 国产精品1024永久免费视频| 色视频色露露永久免费观看| 亚洲精品无码99在线观看 | 久热综合在线亚洲精品| 免费一本色道久久一区| 色哟哟国产精品免费观看| 亚洲AV日韩AV永久无码下载| 最近中文字幕mv免费高清电影| 一级免费黄色大片| wwwxxx亚洲| 精品亚洲永久免费精品|