⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interruptexample.java

📁 Quartz is a full-featured, open source job scheduling system that can be integrated with, or used al
💻 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.example7;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.TriggerUtils;import org.quartz.impl.StdSchedulerFactory;import org.apache.commons.logging.LogFactory;import org.apache.commons.logging.Log;/** * Demonstrates the behavior of <code>StatefulJob</code>s, as well as how * misfire instructions affect the firings of triggers of <code>StatefulJob</code> * s - when the jobs take longer to execute that the frequency of the trigger's * repitition. *  * <p> * While the example is running, you should note that there are two triggers * with identical schedules, firing identical jobs. The triggers "want" to fire * every 3 seconds, but the jobs take 10 seconds to execute. Therefore, by the * time the jobs complete their execution, the triggers have already "misfired" * (unless the scheduler's "misfire threshold" has been set to more than 7 * seconds). You should see that one of the jobs has its misfire instruction * set to <code>SimpleTrigger.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT</code>- * which causes it to fire immediately, when the misfire is detected. The other * trigger uses the default "smart policy" misfire instruction, which causes * the trigger to advance to its next fire time (skipping those that it has * missed) - so that it does not refire immediately, but rather at the next * scheduled time. * </p> *  * @author <a href="mailto:bonhamcm@thirdeyeconsulting.com">Chris Bonham</a> */public class InterruptExample {    public void run() throws Exception {        final Log log = LogFactory.getLog(InterruptExample.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, 15).getTime();        JobDetail job = new JobDetail("interruptableJob1", "group1",                DumbInterruptableJob.class);        SimpleTrigger trigger =             new SimpleTrigger("trigger1", "group1",                     new Date(ts),                     null,                     SimpleTrigger.REPEAT_INDEFINITELY,                     5000L);        Date ft = sched.scheduleJob(job, trigger);        log.info(job.getFullName() + " will run at: " + ft + " and repeat: "                + trigger.getRepeatCount() + " times, every "                + trigger.getRepeatInterval() / 1000 + " seconds");        // start up the scheduler (jobs do not start to fire until        // the scheduler has been started)        sched.start();        log.info("------- Started Scheduler -----------------");                log.info("------- Starting loop to interrupt job every 7 seconds ----------");        for(int i=0; i < 50; i++) {            try {                Thread.sleep(7000L);                 // tell the scheduler to interrupt our job                sched.interrupt(job.getName(), job.getGroup());            } 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 {        InterruptExample example = new InterruptExample();        example.run();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -