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

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

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

    vjame

    優(yōu)化代碼是無止境的
    隨筆 - 65, 文章 - 9, 評論 - 26, 引用 - 0
    數(shù)據(jù)加載中……

    Cron 觸發(fā)器

    一個cron表達式有至少6個(也可能是7個)由空格分隔的時間元素。從左至右,這些元素的定義如下:

    1.秒(0–59)

    2.分鐘(0–59)

    3.小時(0–23)

    4.月份中的日期(1–31)

    5.月份(1–12或JAN–DEC)

    6.星期中的日期(1–7或SUN–SAT)

    7.年份(1970–2099)

    每一個元素都可以顯式地規(guī)定一個值(如6),一個區(qū)間(如9-12),一個列表(如9,11,13)或一個通配符(如*)。“月份中的日期”和“星期中的日期”這兩個元素是互斥的,因此應(yīng)該通過設(shè)置一個問號(?)來表明你不想設(shè)置的那個字段。表中顯示了一些cron表達式的例子和它們的意義:

    Cron 表達式包括以下 7 個字段:

    一些cron表達式的例子

    表  達  式

    意    義

    0 0 10,14,16 * * ?

    每天上午10點,下午2點和下午4點

    0 0,15,30,45 * 1-10 * ?

    每月前10天每隔15分鐘

    30 0 0 1 1 ? 2012

    在2012年1月1日午夜過30秒時

    0 0 8-5 ? * MON-FRI

    每個工作日的工作時間

    對于cronReportTrigger,我們設(shè)置cronExpression為0 0 6 * * ?可以把它讀作“在任何月份任何日期(不管是星期幾)的6時0分0秒執(zhí)行觸發(fā)器。換句話說,這個觸發(fā)器會在每天早晨6:00執(zhí)行。

    使用CronTriggerBean完全能夠滿足課程主任的期望了。現(xiàn)在剩下要做的只是啟動這個工作了。

    • 小時
    • 月內(nèi)日期
    • 周內(nèi)日期
    • 年(可選字段)

    特殊字符

    Cron 觸發(fā)器利用一系列特殊字符,如下所示:

    • 反斜線(/)字符表示增量值。例如,在秒字段中“5/15”代表從第 5 秒開始,每 15 秒一次。

    • 問號(?)字符和字母 L 字符只有在月內(nèi)日期和周內(nèi)日期字段中可用。問號表示這個字段不包含具體值。所以,如果指定月內(nèi)日期,可以在周內(nèi)日期字段中插入“?”,表示周內(nèi)日期值無關(guān)緊要。字母 L 字符是 last 的縮寫。放在月內(nèi)日期字段中,表示安排在當月最后一天執(zhí)行。在周內(nèi)日期字段中,如果“L”單獨存在,就等于“7”,否則代表當月內(nèi)周內(nèi)日期的最后一個實例。所以“0L”表示安排在當月的最后一個星期日執(zhí)行。

    • 在月內(nèi)日期字段中的字母(W)字符把執(zhí)行安排在最靠近指定值的工作日。把“1W”放在月內(nèi)日期字段中,表示把執(zhí)行安排在當月的第一個工作日內(nèi)。

    • 井號(#)字符為給定月份指定具體的工作日實例。把“MON#2”放在周內(nèi)日期字段中,表示把任務(wù)安排在當月的第二個星期一。

    • 星號(*)字符是通配字符,表示該字段可以接受任何可能的值。

    SimpleJob.java

    /* 
     * Copyright 2005 OpenSymphony 
     * 
     * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
     * use this file except in compliance with the License. You may obtain a copy 
     * of the License at 
     * 
     *   
    http://www.apache.org/licenses/LICENSE-2.0 
     *   
     * Unless required by applicable law or agreed to in writing, software 
     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 
     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 
     * License for the specific language governing permissions and limitations 
     * under the License.
     * 
     
    */

    package org.quartz.examples.example3;

    import java.util.Date;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;

    /**
     * <p>
     * This is just a simple job that gets fired off many times by example 1
     * </p>
     * 
     * 
    @author Bill Kratzer
     
    */
    public class SimpleJob implements Job {

        
    private static Log _log = LogFactory.getLog(SimpleJob.class);

        
    /**
         * Quartz requires a public empty constructor so that the
         * scheduler can instantiate the class whenever it needs.
         
    */
        
    public SimpleJob() {
        }

        
    /**
         * <p>
         * Called by the <code>{
    @link org.quartz.Scheduler}</code> when a
         * <code>{
    @link org.quartz.Trigger}</code> fires that is associated with
         * the <code>Job</code>.
         * </p>
         * 
         * 
    @throws JobExecutionException
         *             if there is an exception while executing the job.
         
    */
        
    public void execute(JobExecutionContext context)
            
    throws JobExecutionException {

            
    // This job simply prints out its job name and the
            
    // date and time that it is running
            String jobName = context.getJobDetail().getFullName();
            _log.info(
    "SimpleJob says: " + jobName + " executing at " + new Date());
            System.out.println(context.getTrigger().getFullName());
        }

    }


    CronTriggerExample.java

    /* 
     * Copyright 2005 OpenSymphony 
     * 
     * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
     * use this file except in compliance with the License. You may obtain a copy 
     * of the License at 
     * 
     *   
    http://www.apache.org/licenses/LICENSE-2.0 
     *   
     * Unless required by applicable law or agreed to in writing, software 
     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 
     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 
     * License for the specific language governing permissions and limitations 
     * under the License.
     * 
     
    */

    package org.quartz.examples.example3;

    import java.util.Date;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.quartz.CronTrigger;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerFactory;
    import org.quartz.SchedulerMetaData;
    import org.quartz.impl.StdSchedulerFactory;

    /**
     * This Example will demonstrate all of the basics of scheduling capabilities of
     * Quartz using Cron Triggers.
     * 
     * 
    @author Bill Kratzer
     
    */
    public class CronTriggerExample {


        
    public void run() throws Exception {
            Log log 
    = LogFactory.getLog(CronTriggerExample.class);

            log.info(
    "------- Initializing -------------------");

            
    // First we must get a reference to a scheduler
            SchedulerFactory sf = new StdSchedulerFactory();
            Scheduler sched 
    = sf.getScheduler();

            log.info(
    "------- Initialization Complete --------");

            log.info(
    "------- Scheduling Jobs ----------------");

            
    // jobs can be scheduled before sched.start() has been called

            
    // job 1 will run every 20 seconds
            JobDetail job = new JobDetail("job1""group1", SimpleJob.class);
            CronTrigger trigger 
    = new CronTrigger("trigger1""group1""job1",
                    
    "group1""0/20 * * * * ?");
            sched.addJob(job, 
    true);
            Date ft 
    = sched.scheduleJob(trigger);
            log.info(job.getFullName() 
    + " has been scheduled to run at: " + ft
                    
    + " and repeat based on expression: "
                    
    + trigger.getCronExpression());

            
    // job 2 will run every other minute (at 15 seconds past the minute)
            job = new JobDetail("job2""group1", SimpleJob.class);
            trigger 
    = new CronTrigger("trigger2""group1""job2""group1",
                    
    "15 0/2 * * * ?");
            sched.addJob(job, 
    true);
            ft 
    = sched.scheduleJob(trigger);
            log.info(job.getFullName() 
    + " has been scheduled to run at: " + ft
                    
    + " and repeat based on expression: "
                    
    + trigger.getCronExpression());

            
    // job 3 will run every other minute but only between 8am and 5pm
            job = new JobDetail("job3""group1", SimpleJob.class);
            trigger 
    = new CronTrigger("trigger3""group1""job3""group1",
                    
    "0 0/2 8-17 * * ?");
            sched.addJob(job, 
    true);
            ft 
    = sched.scheduleJob(trigger);
            log.info(job.getFullName() 
    + " has been scheduled to run at: " + ft
                    
    + " and repeat based on expression: "
                    
    + trigger.getCronExpression());

            
    // job 4 will run every three minutes but only between 5pm and 11pm
            job = new JobDetail("job4""group1", SimpleJob.class);
            trigger 
    = new CronTrigger("trigger4""group1""job4""group1",
                    
    "0 0/3 17-23 * * ?");
            sched.addJob(job, 
    true);
            ft 
    = sched.scheduleJob(trigger);
            log.info(job.getFullName() 
    + " has been scheduled to run at: " + ft
                    
    + " and repeat based on expression: "
                    
    + trigger.getCronExpression());

            
    // job 5 will run at 10am on the 1st and 15th days of the month
            job = new JobDetail("job5""group1", SimpleJob.class);
            trigger 
    = new CronTrigger("trigger5""group1""job5""group1",
                    
    "0 0 10am 1,15 * ?");
            sched.addJob(job, 
    true);
            ft 
    = sched.scheduleJob(trigger);
            log.info(job.getFullName() 
    + " has been scheduled to run at: " + ft
                    
    + " and repeat based on expression: "
                    
    + trigger.getCronExpression());

            
    // job 6 will run every 30 seconds but only on Weekdays (Monday through
            
    // Friday)
            job = new JobDetail("job6""group1", SimpleJob.class);
            trigger 
    = new CronTrigger("trigger6""group1""job6""group1",
                    
    "0,30 * * ? * MON-FRI");
            sched.addJob(job, 
    true);
            ft 
    = sched.scheduleJob(trigger);
            log.info(job.getFullName() 
    + " has been scheduled to run at: " + ft
                    
    + " and repeat based on expression: "
                    
    + trigger.getCronExpression());

            
    // job 7 will run every 30 seconds but only on Weekends (Saturday and
            
    // Sunday)
            job = new JobDetail("job7""group1", SimpleJob.class);
            trigger 
    = new CronTrigger("trigger7""group1""job7""group1",
                    
    "0,30 * * ? * SAT,SUN");
            sched.addJob(job, 
    true);
            ft 
    = sched.scheduleJob(trigger);
            log.info(job.getFullName() 
    + " has been scheduled to run at: " + ft
                    
    + " and repeat based on expression: "
                    
    + trigger.getCronExpression());

            log.info(
    "------- Starting Scheduler ----------------");

            
    // All of the jobs have been added to the scheduler, but none of the
            
    // jobs
            
    // will run until the scheduler has been started
            sched.start();

            log.info(
    "------- Started Scheduler -----------------");

            log.info(
    "------- Waiting five minutes ------------");
            
    try {
                
    // wait five minutes to show jobs
                Thread.sleep(300L * 1000L);
                
    // executing
            } catch (Exception e) {
            }

            log.info(
    "------- Shutting Down ---------------------");

            sched.shutdown(
    true);

            log.info(
    "------- Shutdown Complete -----------------");

            SchedulerMetaData metaData 
    = sched.getMetaData();
            log.info(
    "Executed " + metaData.numJobsExecuted() + " jobs.");

        }

        
    public static void main(String[] args) throws Exception {

            CronTriggerExample example 
    = new CronTriggerExample();
            example.run();
        }

    }



    運行結(jié)果:
     2008-12-22 21:25:22 org.quartz.examples.example3.CronTriggerExample run
    信息: ------- Initializing -------------------
    2008-12-22 21:25:23 org.quartz.simpl.SimpleThreadPool initialize
    信息: Job execution threads will use class loader of thread: main
    2008-12-22 21:25:23 org.quartz.core.SchedulerSignalerImpl <init>
    信息: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
    2008-12-22 21:25:23 org.quartz.core.QuartzScheduler <init>
    信息: Quartz Scheduler v.1.6.4 created.
    2008-12-22 21:25:23 org.quartz.simpl.RAMJobStore initialize
    信息: RAMJobStore initialized.
    2008-12-22 21:25:23 org.quartz.impl.StdSchedulerFactory instantiate
    信息: Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
    2008-12-22 21:25:23 org.quartz.impl.StdSchedulerFactory instantiate
    信息: Quartz scheduler version: 1.6.4
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: ------- Initialization Complete --------
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: ------- Scheduling Jobs ----------------
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: group1.job1 has been scheduled to run at: Mon Dec 22 21:25:40 CST 2008 and repeat based on expression: 0/20 * * * * ?
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: group1.job2 has been scheduled to run at: Mon Dec 22 21:26:15 CST 2008 and repeat based on expression: 15 0/2 * * * ?
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: group1.job3 has been scheduled to run at: Tue Dec 23 08:00:00 CST 2008 and repeat based on expression: 0 0/2 8-17 * * ?
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: group1.job4 has been scheduled to run at: Mon Dec 22 21:27:00 CST 2008 and repeat based on expression: 0 0/3 17-23 * * ?
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: group1.job5 has been scheduled to run at: Thu Jan 01 10:00:00 CST 2009 and repeat based on expression: 0 0 10AM 1,15 * ?
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: group1.job6 has been scheduled to run at: Mon Dec 22 21:25:30 CST 2008 and repeat based on expression: 0,30 * * ? * MON-FRI
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: group1.job7 has been scheduled to run at: Sat Dec 27 00:00:00 CST 2008 and repeat based on expression: 0,30 * * ? * SAT,SUN
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: ------- Starting Scheduler ----------------
    2008-12-22 21:25:23 org.quartz.core.QuartzScheduler start
    信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: ------- Started Scheduler -----------------
    2008-12-22 21:25:23 org.quartz.examples.example3.CronTriggerExample run
    信息: ------- Waiting five minutes... ------------
    group1.trigger6
    2008-12-22 21:25:30 org.quartz.examples.example3.SimpleJob execute
    信息: SimpleJob says: group1.job6 executing at Mon Dec 22 21:25:30 CST 2008
    group1.trigger1
    2008-12-22 21:25:40 org.quartz.examples.example3.SimpleJob execute
    信息: SimpleJob says: group1.job1 executing at Mon Dec 22 21:25:40 CST 2008
    group1.trigger1
    2008-12-22 21:26:00 org.quartz.examples.example3.SimpleJob execute
    信息: SimpleJob says: group1.job1 executing at Mon Dec 22 21:26:00 CST 2008
    group1.trigger6
    2008-12-22 21:26:00 org.quartz.examples.example3.SimpleJob execute
    信息: SimpleJob says: group1.job6 executing at Mon Dec 22 21:26:00 CST 2008
    group1.trigger2
    2008-12-22 21:26:15 org.quartz.examples.example3.SimpleJob execute
    信息: SimpleJob says: group1.job2 executing at Mon Dec 22 21:26:15 CST 2008
    group1.trigger1
    2008-12-22 21:26:20 org.quartz.examples.example3.SimpleJob execute
    信息: SimpleJob says: group1.job1 executing at Mon Dec 22 21:26:20 CST 2008
    group1.trigger6
    2008-12-22 21:26:30 org.quartz.examples.example3.SimpleJob execute
    信息: SimpleJob says: group1.job6 executing at Mon Dec 22 21:26:30 CST 2008

    posted on 2008-12-22 21:28 lanjh 閱讀(1066) 評論(0)  編輯  收藏 所屬分類: Java App

    主站蜘蛛池模板: 九九综合VA免费看| 亚洲一区中文字幕在线观看| 国产AV无码专区亚洲Av| 中文字幕亚洲综合久久2| 亚洲福利一区二区精品秒拍| 国产成人精品日本亚洲18图| 亚洲成av人片天堂网无码】| 一级成人a做片免费| 久久99免费视频| 99爱在线精品免费观看| 国产精品视频免费一区二区三区| 亚洲国产天堂久久综合| 亚洲国产精品一区| 国产精品亚洲综合五月天| 亚洲爆乳成av人在线视菜奈实| 免费播放国产性色生活片| a级毛片无码免费真人久久| 69av免费视频| 亚洲A∨精品一区二区三区| 亚洲精品国产字幕久久不卡| 亚洲午夜电影在线观看高清| 亚洲欧美在线x视频| 久久久久久久99精品免费观看| av免费不卡国产观看| 亚洲AV之男人的天堂| 亚洲视频中文字幕| 午夜亚洲国产理论片二级港台二级| 怡红院免费全部视频在线视频| 99无码人妻一区二区三区免费| 亚洲国产综合无码一区二区二三区| 亚洲国产精品久久久天堂| 亚洲一区二区三区乱码在线欧洲| 九九免费观看全部免费视频| 成年人免费的视频| 亚洲日韩精品无码专区网站| 亚洲美女视频免费| 一级毛片免费播放试看60分钟| 最近免费mv在线电影| 亚洲成a人片在线播放| 亚洲精品无码久久毛片波多野吉衣 | 最近最新MV在线观看免费高清|