• 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.example4;
    
    import java.util.Date;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.quartz.JobDataMap;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.quartz.StatefulJob;
    
    /**
     * <p>
     * This is just a simple job that receives parameters and
     * maintains state
     * </p>
     * 
     * @author Bill Kratzer
     */
    public class ColorJob implements StatefulJob {
    
        private static Logger _log = LoggerFactory.getLogger(ColorJob.class);
        
        // parameter names specific to this job
        public static final String FAVORITE_COLOR = "favorite color";
        public static final String EXECUTION_COUNT = "count";
        
        // Since Quartz will re-instantiate a class every time it
        // gets executed, members non-static member variables can
        // not be used to maintain state!
        private int _counter = 1;
    
        /**
         * <p>
         * Empty constructor for job initilization
         * </p>
         * <p>
         * Quartz requires a public empty constructor so that the
         * scheduler can instantiate the class whenever it needs.
         * </p>
         */
        public ColorJob() {
        }
    
        /**
         * <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();
            
            // Grab and print passed parameters
            JobDataMap data = context.getJobDetail().getJobDataMap();
            String favoriteColor = data.getString(FAVORITE_COLOR);
            int count = data.getInt(EXECUTION_COUNT);
            _log.info("ColorJob: " + jobName + " executing at " + new Date() + "
    " +
                "  favorite color is " + favoriteColor + "
    " + 
                "  execution count (from job map) is " + count + "
    " + 
                "  execution count (from job member variable) is " + _counter);
            
            // increment the count and store it back into the 
            // job map so that job state can be properly maintained
            count++;
            data.put(EXECUTION_COUNT, count);
            
            // Increment the local member variable 
            // This serves no real purpose since job state can not 
            // be maintained via member variables!
            _counter++;
        }
    
    }
    
    /* 
     * 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.example4;
    
    import java.util.Date;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerFactory;
    import org.quartz.SchedulerMetaData;
    import org.quartz.SimpleTrigger;
    import org.quartz.TriggerUtils;
    import org.quartz.impl.StdSchedulerFactory;
    
    /**
     * This Example will demonstrate how job parameters can be 
     * passed into jobs and how state can be maintained
     * 
     * @author Bill Kratzer
     */
    public class JobStateExample {
    
        public void run() throws Exception {
            Logger log = LoggerFactory.getLogger(JobStateExample.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 ----------------");
    
            // get a "nice round" time a few seconds in the future....
            long ts = TriggerUtils.getNextGivenSecondDate(null, 10).getTime();
    
            // job1 will only run 5 times, every 10 seconds
            JobDetail job1 = new JobDetail("job1", "group1", ColorJob.class);
            SimpleTrigger trigger1 = new SimpleTrigger("trigger1", "group1", "job1", "group1",
                    new Date(ts), null, 4, 10000);
            // pass initialization parameters into the job
            job1.getJobDataMap().put(ColorJob.FAVORITE_COLOR, "Green");
            job1.getJobDataMap().put(ColorJob.EXECUTION_COUNT, 1);
            
            // schedule the job to run
            Date scheduleTime1 = sched.scheduleJob(job1, trigger1);
            log.info(job1.getFullName() +
                    " will run at: " + scheduleTime1 +  
                    " and repeat: " + trigger1.getRepeatCount() + 
                    " times, every " + trigger1.getRepeatInterval() / 1000 + " seconds");
    
            // job2 will also run 5 times, every 10 seconds
            JobDetail job2 = new JobDetail("job2", "group1", ColorJob.class);
            SimpleTrigger trigger2 = new SimpleTrigger("trigger2", "group1", "job2", "group1",
                    new Date(ts + 1000), null, 4, 10000);
            // pass initialization parameters into the job
            // this job has a different favorite color!
            job2.getJobDataMap().put(ColorJob.FAVORITE_COLOR, "Red");
            job2.getJobDataMap().put(ColorJob.EXECUTION_COUNT, 1);
            
            // schedule the job to run
            Date scheduleTime2 = sched.scheduleJob(job2, trigger2);
            log.info(job2.getFullName() +
                    " will run at: " + scheduleTime2 +
                    " and repeat: " + trigger2.getRepeatCount() +
                    " times, every " + trigger2.getRepeatInterval() / 1000 + " seconds"); 
    
    
            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 60 seconds... -------------");
            try {
                // wait five minutes to show jobs
                Thread.sleep(60L * 1000L); 
                // executing...
            } catch (Exception e) {
            }
    
            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 {
    
            JobStateExample example = new JobStateExample();
            example.run();
        }
    
    }
    

      

    /* 
     * 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.example4;
    
    import java.util.Date;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerFactory;
    import org.quartz.SchedulerMetaData;
    import org.quartz.SimpleTrigger;
    import org.quartz.TriggerUtils;
    import org.quartz.impl.StdSchedulerFactory;
    
    /**
     * This Example will demonstrate how job parameters can be 
     * passed into jobs and how state can be maintained
     * 
     * @author Bill Kratzer
     */
    public class JobStateExample {
    
        public void run() throws Exception {
            Logger log = LoggerFactory.getLogger(JobStateExample.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 ----------------");
    
            // get a "nice round" time a few seconds in the future....
            long ts = TriggerUtils.getNextGivenSecondDate(null, 10).getTime();
    
            // job1 will only run 5 times, every 10 seconds
            JobDetail job1 = new JobDetail("job1", "group1", ColorJob.class);
            SimpleTrigger trigger1 = new SimpleTrigger("trigger1", "group1", "job1", "group1",
                    new Date(ts), null, 4, 10000);
            // pass initialization parameters into the job
            job1.getJobDataMap().put(ColorJob.FAVORITE_COLOR, "Green");
            job1.getJobDataMap().put(ColorJob.EXECUTION_COUNT, 1);
            
            // schedule the job to run
            Date scheduleTime1 = sched.scheduleJob(job1, trigger1);
            log.info(job1.getFullName() +
                    " will run at: " + scheduleTime1 +  
                    " and repeat: " + trigger1.getRepeatCount() + 
                    " times, every " + trigger1.getRepeatInterval() / 1000 + " seconds");
    
            // job2 will also run 5 times, every 10 seconds
            JobDetail job2 = new JobDetail("job2", "group1", ColorJob.class);
            SimpleTrigger trigger2 = new SimpleTrigger("trigger2", "group1", "job2", "group1",
                    new Date(ts + 1000), null, 4, 10000);
            // pass initialization parameters into the job
            // this job has a different favorite color!
            job2.getJobDataMap().put(ColorJob.FAVORITE_COLOR, "Red");
            job2.getJobDataMap().put(ColorJob.EXECUTION_COUNT, 1);
            
            // schedule the job to run
            Date scheduleTime2 = sched.scheduleJob(job2, trigger2);
            log.info(job2.getFullName() +
                    " will run at: " + scheduleTime2 +
                    " and repeat: " + trigger2.getRepeatCount() +
                    " times, every " + trigger2.getRepeatInterval() / 1000 + " seconds"); 
    
    
            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 60 seconds... -------------");
            try {
                // wait five minutes to show jobs
                Thread.sleep(60L * 1000L); 
                // executing...
            } catch (Exception e) {
            }
    
            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 {
    
            JobStateExample example = new JobStateExample();
            example.run();
        }
    
    }
    

      

    [INFO] 02 二月 01:49:30.844 下午 main [org.quartz.examples.example4.JobStateExample]
    ------- Initializing -------------------
    
    [INFO] 02 二月 01:49:30.868 下午 main [org.quartz.simpl.SimpleThreadPool]
    Job execution threads will use class loader of thread: main
    
    [INFO] 02 二月 01:49:30.881 下午 main [org.quartz.core.SchedulerSignalerImpl]
    Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
    
    [INFO] 02 二月 01:49:30.882 下午 main [org.quartz.core.QuartzScheduler]
    Quartz Scheduler v.1.8.5 created.
    
    [INFO] 02 二月 01:49:30.884 下午 main [org.quartz.simpl.RAMJobStore]
    RAMJobStore initialized.
    
    [INFO] 02 二月 01:49:30.884 下午 main [org.quartz.core.QuartzScheduler]
    Scheduler meta-data: Quartz Scheduler (v1.8.5) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
      Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
      NOT STARTED.
      Currently in standby mode.
      Number of jobs executed: 0
      Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
      Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
    
    
    [INFO] 02 二月 01:49:30.884 下午 main [org.quartz.impl.StdSchedulerFactory]
    Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
    
    [INFO] 02 二月 01:49:30.885 下午 main [org.quartz.impl.StdSchedulerFactory]
    Quartz scheduler version: 1.8.5
    
    [INFO] 02 二月 01:49:30.885 下午 main [org.quartz.examples.example4.JobStateExample]
    ------- Initialization Complete --------
    
    [INFO] 02 二月 01:49:30.885 下午 main [org.quartz.examples.example4.JobStateExample]
    ------- Scheduling Jobs ----------------
    
    [INFO] 02 二月 01:49:30.890 下午 main [org.quartz.examples.example4.JobStateExample]
    group1.job1 will run at: Tue Feb 02 13:49:40 CST 2016 and repeat: 4 times, every 10 seconds
    
    [INFO] 02 二月 01:49:30.890 下午 main [org.quartz.examples.example4.JobStateExample]
    group1.job2 will run at: Tue Feb 02 13:49:41 CST 2016 and repeat: 4 times, every 10 seconds
    
    [INFO] 02 二月 01:49:30.891 下午 main [org.quartz.examples.example4.JobStateExample]
    ------- Starting Scheduler ----------------
    
    [INFO] 02 二月 01:49:30.891 下午 main [org.quartz.core.QuartzScheduler]
    Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
    
    [INFO] 02 二月 01:49:30.891 下午 main [org.quartz.examples.example4.JobStateExample]
    ------- Started Scheduler -----------------
    
    [INFO] 02 二月 01:49:30.891 下午 main [org.quartz.examples.example4.JobStateExample]
    ------- Waiting 60 seconds... -------------
    
    [DEBUG] 02 二月 01:49:31.885 下午 Timer-0 [org.quartz.utils.UpdateChecker]
    Checking for available updated version of Quartz...
    
    [DEBUG] 02 二月 01:49:40.008 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job1', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:49:40.026 下午 DefaultQuartzScheduler_Worker-1 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job1
    
    [INFO] 02 二月 01:49:40.026 下午 DefaultQuartzScheduler_Worker-1 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job1 executing at Tue Feb 02 13:49:40 CST 2016
      favorite color is Green
      execution count (from job map) is 1
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:49:41.001 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job2', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:49:41.002 下午 DefaultQuartzScheduler_Worker-2 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job2
    
    [INFO] 02 二月 01:49:41.002 下午 DefaultQuartzScheduler_Worker-2 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job2 executing at Tue Feb 02 13:49:41 CST 2016
      favorite color is Red
      execution count (from job map) is 1
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:49:50.000 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job1', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:49:50.000 下午 DefaultQuartzScheduler_Worker-3 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job1
    
    [INFO] 02 二月 01:49:50.001 下午 DefaultQuartzScheduler_Worker-3 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job1 executing at Tue Feb 02 13:49:50 CST 2016
      favorite color is Green
      execution count (from job map) is 2
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:49:51.001 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job2', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:49:51.002 下午 DefaultQuartzScheduler_Worker-4 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job2
    
    [INFO] 02 二月 01:49:51.002 下午 DefaultQuartzScheduler_Worker-4 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job2 executing at Tue Feb 02 13:49:51 CST 2016
      favorite color is Red
      execution count (from job map) is 2
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:50:00.000 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job1', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:50:00.001 下午 DefaultQuartzScheduler_Worker-5 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job1
    
    [INFO] 02 二月 01:50:00.001 下午 DefaultQuartzScheduler_Worker-5 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job1 executing at Tue Feb 02 13:50:00 CST 2016
      favorite color is Green
      execution count (from job map) is 3
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:50:01.000 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job2', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:50:01.000 下午 DefaultQuartzScheduler_Worker-6 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job2
    
    [INFO] 02 二月 01:50:01.001 下午 DefaultQuartzScheduler_Worker-6 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job2 executing at Tue Feb 02 13:50:01 CST 2016
      favorite color is Red
      execution count (from job map) is 3
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:50:10.001 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job1', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:50:10.001 下午 DefaultQuartzScheduler_Worker-7 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job1
    
    [INFO] 02 二月 01:50:10.001 下午 DefaultQuartzScheduler_Worker-7 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job1 executing at Tue Feb 02 13:50:10 CST 2016
      favorite color is Green
      execution count (from job map) is 4
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:50:11.001 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job2', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:50:11.002 下午 DefaultQuartzScheduler_Worker-8 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job2
    
    [INFO] 02 二月 01:50:11.002 下午 DefaultQuartzScheduler_Worker-8 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job2 executing at Tue Feb 02 13:50:11 CST 2016
      favorite color is Red
      execution count (from job map) is 4
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:50:20.000 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job1', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:50:20.000 下午 DefaultQuartzScheduler_Worker-9 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job1
    
    [INFO] 02 二月 01:50:20.001 下午 DefaultQuartzScheduler_Worker-9 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job1 executing at Tue Feb 02 13:50:20 CST 2016
      favorite color is Green
      execution count (from job map) is 5
      execution count (from job member variable) is 1
    
    [DEBUG] 02 二月 01:50:21.001 下午 DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.SimpleJobFactory]
    Producing instance of Job 'group1.job2', class=org.quartz.examples.example4.ColorJob
    
    [DEBUG] 02 二月 01:50:21.002 下午 DefaultQuartzScheduler_Worker-10 [org.quartz.core.JobRunShell]
    Calling execute on job group1.job2
    
    [INFO] 02 二月 01:50:21.002 下午 DefaultQuartzScheduler_Worker-10 [org.quartz.examples.example4.ColorJob]
    ColorJob: group1.job2 executing at Tue Feb 02 13:50:21 CST 2016
      favorite color is Red
      execution count (from job map) is 5
      execution count (from job member variable) is 1
    
    [INFO] 02 二月 01:50:30.905 下午 main [org.quartz.examples.example4.JobStateExample]
    ------- Shutting Down ---------------------
    
    [INFO] 02 二月 01:50:30.906 下午 main [org.quartz.core.QuartzScheduler]
    Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
    
    [INFO] 02 二月 01:50:30.906 下午 main [org.quartz.core.QuartzScheduler]
    Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
    
    [DEBUG] 02 二月 01:50:30.907 下午 main [org.quartz.simpl.SimpleThreadPool]
    shutdown complete
    
    [INFO] 02 二月 01:50:30.908 下午 main [org.quartz.core.QuartzScheduler]
    Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
    
    [INFO] 02 二月 01:50:30.908 下午 main [org.quartz.examples.example4.JobStateExample]
    ------- Shutdown Complete -----------------
    
    [INFO] 02 二月 01:50:30.909 下午 main [org.quartz.examples.example4.JobStateExample]
    Executed 10 jobs.
    
    [DEBUG] 02 二月 01:50:31.029 下午 DefaultQuartzScheduler_Worker-10 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.029 下午 DefaultQuartzScheduler_Worker-9 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.093 下午 DefaultQuartzScheduler_Worker-7 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.093 下午 DefaultQuartzScheduler_Worker-8 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.179 下午 DefaultQuartzScheduler_Worker-6 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.179 下午 DefaultQuartzScheduler_Worker-5 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.240 下午 DefaultQuartzScheduler_Worker-3 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.258 下午 DefaultQuartzScheduler_Worker-4 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.295 下午 DefaultQuartzScheduler_Worker-2 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    
    [DEBUG] 02 二月 01:50:31.339 下午 DefaultQuartzScheduler_Worker-1 [org.quartz.simpl.SimpleThreadPool]
    WorkerThread is shut down.
    

     

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    
      <appender name="default" class="org.apache.log4j.ConsoleAppender">
        <param name="target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c]%n%m%n%n"/>
        </layout>
      </appender>
    
    
     <logger name="org.quartz">
       <level value="debug" />
     </logger>
    
      <root>
        <level value="debug" />
        <appender-ref ref="default" />
      </root>
    
      
    </log4j:configuration>
    

      

     

  • 相关阅读:
    python
    【转载】【CPU】关于x86、x86_64/x64、amd64和arm64/aarch64
    【百思不得其解1】诡异的速度差异
    LeakCanary 与 鹅场Matrix ResourceCanary对比分析
    android 插件化框架VitualAPK
    android高级篇收录
    滴滴Booster移动APP质量优化框架 学习之旅 三
    滴滴Booster移动APP质量优化框架 学习之旅 二
    滴滴Booster移动APP质量优化框架 学习之旅
    不一样视角的Glide剖析
  • 原文地址:https://www.cnblogs.com/wuxinliulei/p/5177377.html
Copyright © 2020-2023  润新知