• Quartz1.8.5例子(十一)


    /* 
     * Copyright 2005 - 2009 Terracotta, Inc. 
     * 
     * 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.example11;
    
    import java.util.Date;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    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 Logger _log = LoggerFactory.getLogger(SimpleJob.class);
    
        // job parameter
        public static final String DELAY_TIME = "delay time";
        
        /**
         * Empty constructor for job initilization
         */
        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("Executing job: " + jobName + " executing at " + new Date());
            
            // wait for a period of time
            long delayTime = 
                context.getJobDetail().getJobDataMap().getLong(DELAY_TIME);
            try {
                Thread.sleep(delayTime); 
            } catch (Exception e) {
            }        
    
            _log.info("Finished Executing job: " + jobName + " at " + new Date());
        }
    
    }
    
    /* 
     * Copyright 2005 - 2009 Terracotta, Inc. 
     * 
     * 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.example11;
    
    import java.util.Date;
    
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerFactory;
    import org.quartz.SchedulerMetaData;
    import org.quartz.SimpleTrigger;
    import org.quartz.impl.StdSchedulerFactory;
    
    import org.slf4j.LoggerFactory;
    import org.slf4j.Logger;
    
    /**
     * This example will spawn a large number of jobs to run
     * 
     * @author James House, Bill Kratzer
     */
    public class LoadExample {
    
        private int _numberOfJobs = 500;
        
        public LoadExample(int inNumberOfJobs) {
            _numberOfJobs = inNumberOfJobs;
        }
        
        public void run() throws Exception {
            Logger log = LoggerFactory.getLogger(LoadExample.class);
    
            // First we must get a reference to a scheduler
            SchedulerFactory sf = new StdSchedulerFactory();
            Scheduler sched = sf.getScheduler();
    
            log.info("------- Initialization Complete -----------");
    
            String schedId = sched.getSchedulerInstanceId();
    
            // schedule 500 jobs to run
            for (int count=1; count <= _numberOfJobs; count++) {
                JobDetail job = new JobDetail("job" + count, "group1",
                        SimpleJob.class);
                // tell the job to delay some small amount... to simulate work...
                long timeDelay = (long) (java.lang.Math.random() * 2500);
                job.getJobDataMap().put(SimpleJob.DELAY_TIME, timeDelay);
                // ask scheduler to re-execute this job if it was in progress when
                // the scheduler went down...
                job.setRequestsRecovery(true);
                SimpleTrigger trigger = new SimpleTrigger("trigger_" + count, "group_1");
                trigger.setStartTime(new Date(System.currentTimeMillis() + 10000L
                        + (count * 100)));
                sched.scheduleJob(job, trigger);
                if (count % 25 == 0) {
                    log.info("...scheduled " + count + " jobs");
                }
            }
            
            
            log.info("------- Starting Scheduler ----------------");
    
            // start the schedule 
            sched.start();
    
            log.info("------- Started Scheduler -----------------");
    
            log.info("------- Waiting five minutes... -----------");
    
            // wait five minutes to give our jobs a chance to run
            try {
                Thread.sleep(300L * 1000L); 
            } catch (Exception e) {
            }
    
            // shut down the scheduler
            log.info("------- Shutting Down ---------------------");
            sched.shutdown(true);
            log.info("------- Shutdown Complete -----------------");
    
            SchedulerMetaData metaData = sched.getMetaData();
            log.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
        }
    
        public static void main(String[] args) throws Exception {
    
            int numberOfJobs = 500;
            if (args.length == 1) {
                numberOfJobs = Integer.parseInt(args[0]);
            }
            if (args.length > 1) {
                System.out.println(
                        "Usage: java " + 
                        LoadExample.class.getName() + 
                        "[# of jobs]");
                return;
            }
            LoadExample example = new LoadExample(numberOfJobs);
            example.run();
        }
    
    }
    

      

  • 相关阅读:
    CSS效果:CSS实用技巧制作三角形以及箭头效果
    JS之this应用详解
    JS之iscroll.js的使用详解
    一个测试人员眼中的创业团队七宗罪
    一个WEB应用的开发流程
    一个年薪一百万的程序员:技术进阶之路
    一个十年IT从业者的职场感言:为什么不要自称是“程序员”
    一位程序员工作10年总结的13个忠告,却让很多人惋惜
    当个好的测试经理不容易,懂得这些很重要
    测试经理岗位职责及应具备的能力
  • 原文地址:https://www.cnblogs.com/wuxinliulei/p/5177827.html
Copyright © 2020-2023  润新知