`

Quartz之CronTrigger

阅读更多
参考资料
1 quartz 学习笔记
http://chinaxxren.iteye.com/blog/897989
任务和触发器是quartz的两大块核心。触发器分CronTrigger 和SimpleTrigger
CronTrigger 支持比 SimpleTrigger 更具体的调度,而且也不是很复杂。基于 cron 表达式,CronTrigger 支持类似日历的重复间隔,而不是单一的时间间隔 —— 这相对 SimpleTrigger 而言是一大改进。掌握CronTrigger,是非常必要,掌握Quartz cron 表达式是学习CronTrigger的关键所在!

环境: XP+Myeclipse6.5+JDK1.6+Quartz2
一 具体代码
1 SimpleJob.java
package org.quartz.examples.example3;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SimpleJob implements Job {
	
	private static int jobCount = 0;

    private static Logger _log = LoggerFactory.getLogger(SimpleJob.class);
    
    private Scheduler sched = null;
   
    public SimpleJob() throws SchedulerException {
    	sched = SchedFacory.getScheduler();
    }
   
    public void execute(JobExecutionContext context)
        throws JobExecutionException {
    	
        JobKey jobKey = context.getJobDetail().getKey();
        TriggerKey triggerKey = context.getTrigger().getKey();       
        
        //启动线程监听触发器的状态
        new Thread(new SchedEventLister(triggerKey)).start();   
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        _log.info("任务分组名称: " + jobKey.getGroup()+",任务名称: " + jobKey.getName()+",触发器组名称: " + triggerKey.getGroup()+ ",触发器名称: "+triggerKey.getName()+" 执行时间: " + sdf.format(new Date()) + ",计数: " + (++jobCount)) ;
               
        //如果任务执行超过20次就结束它
      /*  if(jobCount > 5){
        	_log.warn("结束任务...");
        	try {
        		//Delete the identified Job from the Scheduler - and any associated Triggers.
        		//从调度器中删除这个唯一任务时同时会删除相关联的触发器^_^
				sched.deleteJob(jobKey);				
				sched.resumeJob(jobKey);
				
			} catch (SchedulerException e) {
				e.printStackTrace();
			}
        }*/
       if(jobCount == 15 ){
        	_log.warn("已经暂停了触发器...,触发器组名: " + triggerKey.getGroup()  + ",触发器名称: " + triggerKey.getName());
        	//暂停触发器        	
        	try {  
        		sched.pauseTrigger(triggerKey);  
            } catch (SchedulerException e) {  
                throw new RuntimeException(e);  
            }  
           
        }         
       
        
        if(jobCount == 20){
        	_log.error("正在停止并且移除触发器...,触发器组名: " + triggerKey.getGroup()  + ",触发器名称: " + triggerKey.getName());
        	try {  
        		sched.resumeTrigger(triggerKey);//停止触发器
        		sched.unscheduleJob(triggerKey);//移除触发器  
            } catch (SchedulerException e) {  
                throw new RuntimeException(e);  
            }             
        }
       
    }
}


2 CronTriggerExample.java
package org.quartz.examples.example3;

import static org.quartz.CronScheduleBuilder.cronSchedule;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerMetaData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class CronTriggerExample {

    public void run() throws Exception {
    	
        Logger log = LoggerFactory.getLogger(CronTriggerExample.class);
      
        //SchedulerFactory sf = new StdSchedulerFactory();
        Scheduler sched = SchedFacory.getScheduler();// sf.getScheduler();    
    
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        CronTrigger trigger = null;
        JobDetail job = null;
        Date ft = null;
        
       /* job = newJob(SimpleJob.class)
            .withIdentity("job1", "group1")
            .build();      
        
        //表示每20秒执行一次
        trigger = newTrigger()
            .withIdentity("trigger1", "group1")
            .withSchedule(cronSchedule("0/20 * * * * ?"))
            .build();*/
      
       /*  
        job = newJob(SimpleJob.class)
            .withIdentity("job2", "group1")
            .build();
        
        //每2分钟执行一次,并且启动时间为:15秒之后开始,例如: 2011-07-08 04:44:15,2011-07-08 04:46:15 ...
       trigger = newTrigger()
            .withIdentity("trigger2", "group1")
            .withSchedule(cronSchedule("15 0/2 * * * ?"))
            .build();*/        
       

       job = newJob(SimpleJob.class)
            .withIdentity("job3", "group1")
            .build();
        
        //在8-17之间每2分钟执行一次
        /*trigger = newTrigger()
            .withIdentity("trigger3", "group1")
            .withSchedule(cronSchedule("0 0/2 8-17 * * ?"))
            .build();*/
       
       //在8-17之间每1分钟执行一次,并且为10秒间隔
       trigger = newTrigger()
       .withIdentity("trigger3", "group1")
       .withSchedule(cronSchedule("0/10 0/1 8-17 * * ?"))
       .build();           
       

       /* job = newJob(SimpleJob.class)
            .withIdentity("job4", "group1")
            .build();
        
        //在16与23之间每3分钟执行一次
        trigger = newTrigger()
            .withIdentity("trigger4", "group1")
            .withSchedule(cronSchedule("0 0/3 16-23 * * ?"))
            .build();*/
        
        /*job = newJob(SimpleJob.class)
            .withIdentity("job5", "group1")
            .build();
        
        trigger = newTrigger()
            .withIdentity("trigger5", "group1")
            .withSchedule(cronSchedule("0 0 10am 1,15 * ?"))
            .build();*/
        
       /* job = newJob(SimpleJob.class)
            .withIdentity("job6", "group1")
            .build();
        
        //2011-07-08 05:11:00,2011-07-08 05:11:02,2011-07-08 05:12:00,2011-07-08 05:12:02
        //第二周到第六周之间执行并且:执行秒数为:0,2各执行一次,没有明白为什么要间隔1分钟后触发,如上.
        trigger = newTrigger()
            .withIdentity("trigger6", "group1")
            .withSchedule(cronSchedule("0,2 * * ? * MON-FRI"))
            .build();*/
/*
        job = newJob(SimpleJob.class)
            .withIdentity("job7", "group1")
            .build();
        
        trigger = newTrigger()
            .withIdentity("trigger7", "group1")
            .withSchedule(cronSchedule("0,30 * * ? * SAT,SUN"))
            .build();*/       
       

        ft = sched.scheduleJob(job, trigger);
        log.info(job.getKey() + " has been scheduled to run at: " + sdf.format(ft)
                + " and repeat based on expression: "
                + trigger.getCronExpression());

        sched.start();

        try {
            //5分钟
            Thread.sleep(300L * 1000L);
          
        } 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 {

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


3 SchedEventLister.java
public class SchedEventLister implements Runnable {

	private static Logger _log = LoggerFactory
			.getLogger(SchedEventLister.class);

	private Scheduler sched = null;
	private TriggerKey triggerKey = null;

	public SchedEventLister(TriggerKey triggerKey) {
		_log.info("触发器线程监听启动....");
		this.triggerKey = triggerKey;
		try {
			sched = SchedFacory.getScheduler();
		} catch (SchedulerException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void run() {

		_log.info("触发器线程监听中。。。。"
				+ new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")
						.format(new Date()));

		// 获取当前触发器的状态
		Trigger.TriggerState ts = null;
		try {
			ts = sched.getTriggerState(triggerKey);
		} catch (SchedulerException e) {
			e.printStackTrace();
		}

		// 如果为暂停状态就恢复
		if (ts == Trigger.TriggerState.PAUSED) {
			
			//暂停10秒在恢复
			try {
				_log.warn("暂停当前线程5秒钟后在恢复触发器...,触发器组名: " + triggerKey.getGroup()
						+ ",触发器名称: " + triggerKey.getName());				
				Thread.sleep(5L*1000L);
			} catch (InterruptedException e1) {				
				e1.printStackTrace();
			}
			
			// 恢复触发器
			_log.warn("正在恢复了触发器...,触发器组名: " + triggerKey.getGroup()
					+ ",触发器名称: " + triggerKey.getName());
			try {
				sched.resumeTrigger(triggerKey);
			} catch (SchedulerException e) {
				throw new RuntimeException(e);
			}
			
		} else if (ts == Trigger.TriggerState.NORMAL) {
			_log.info("触发器线程监听中。。。。,状态:正常 ");
		} else if (ts == Trigger.TriggerState.NONE) {
			_log.info("触发器线程监听中。。。。,状态:没有触发器 ");
		} else if (ts == Trigger.TriggerState.ERROR) {
			_log.info("触发器线程监听中。。。。,状态:错误 ");
		} else if (ts == Trigger.TriggerState.BLOCKED) {
			_log.info("触发器线程监听中。。。。,状态:堵塞 ");
		}
	}
}


4 SchedFacory.java
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

/**   
 *Title:     
 *Description:     
 *Copyright: Copyright (c) 2011   
 *Company:http://liuzidong.iteye.com/    
 *Makedate:2011-7-11 上午09:55:36   
 * @author liuzidong   
 * @version 1.0   
 * @since 1.0    
 *   
 */
public class SchedFacory {
	
	private static  SchedulerFactory sf = new StdSchedulerFactory();	
	
	public static Scheduler getScheduler() throws SchedulerException{
		return sf.getScheduler();
	}
}


5 输出结果如下:
[INFO] 2011-07-11 02:54:56.796 下午 main [org.quartz.simpl.SimpleThreadPool]
Job execution threads will use class loader of thread: main

[INFO] 2011-07-11 02:54:56.812 下午 main [org.quartz.core.SchedulerSignalerImpl]
Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl

[INFO] 2011-07-11 02:54:56.812 下午 main [org.quartz.core.QuartzScheduler]
Quartz Scheduler v.2.0.1 created.

[INFO] 2011-07-11 02:54:56.812 下午 main [org.quartz.simpl.RAMJobStore]
RAMJobStore initialized.

[INFO] 2011-07-11 02:54:56.812 下午 main [org.quartz.core.QuartzScheduler]
Scheduler meta-data: Quartz Scheduler (v2.0.1) '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] 2011-07-11 02:54:56.812 下午 main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'

[INFO] 2011-07-11 02:54:56.812 下午 main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler version: 2.0.1

[INFO] 2011-07-11 02:54:56.828 下午 main [org.quartz.examples.example3.CronTriggerExample]
group1.job3 has been scheduled to run at: 2011-07-11 02:55:00 and repeat based on expression: 0/10 0/1 8-17 * * ?

[INFO] 2011-07-11 02:54:56.828 下午 main [org.quartz.core.QuartzScheduler]
Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.

[INFO] 2011-07-11 02:55:00.015 下午 DefaultQuartzScheduler_Worker-1 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:55:00.015 下午 DefaultQuartzScheduler_Worker-1 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:55:00,计数: 1

[INFO] 2011-07-11 02:55:00.015 下午 Thread-2 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:55:00

[INFO] 2011-07-11 02:55:00.015 下午 Thread-2 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:55:10.000 下午 DefaultQuartzScheduler_Worker-2 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:55:10.000 下午 DefaultQuartzScheduler_Worker-2 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:55:10,计数: 2

[INFO] 2011-07-11 02:55:10.000 下午 Thread-3 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:55:10

[INFO] 2011-07-11 02:55:10.000 下午 Thread-3 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:55:20.000 下午 DefaultQuartzScheduler_Worker-3 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:55:20.000 下午 DefaultQuartzScheduler_Worker-3 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:55:20,计数: 3

[INFO] 2011-07-11 02:55:20.000 下午 Thread-4 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:55:20

[INFO] 2011-07-11 02:55:20.000 下午 Thread-4 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:55:30.000 下午 DefaultQuartzScheduler_Worker-4 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:55:30.000 下午 DefaultQuartzScheduler_Worker-4 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:55:30,计数: 4

[INFO] 2011-07-11 02:55:30.000 下午 Thread-5 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:55:30

[INFO] 2011-07-11 02:55:30.000 下午 Thread-5 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:55:40.000 下午 DefaultQuartzScheduler_Worker-5 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:55:40.000 下午 DefaultQuartzScheduler_Worker-5 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:55:40,计数: 5

[INFO] 2011-07-11 02:55:40.000 下午 Thread-6 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:55:40

[INFO] 2011-07-11 02:55:40.000 下午 Thread-6 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:55:50.000 下午 DefaultQuartzScheduler_Worker-6 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:55:50.000 下午 DefaultQuartzScheduler_Worker-6 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:55:50,计数: 6

[INFO] 2011-07-11 02:55:50.000 下午 Thread-7 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:55:50

[INFO] 2011-07-11 02:55:50.000 下午 Thread-7 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:56:00.000 下午 DefaultQuartzScheduler_Worker-7 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:56:00.000 下午 DefaultQuartzScheduler_Worker-7 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:56:00,计数: 7

[INFO] 2011-07-11 02:56:00.000 下午 Thread-8 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:56:00

[INFO] 2011-07-11 02:56:00.000 下午 Thread-8 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:56:10.000 下午 DefaultQuartzScheduler_Worker-8 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:56:10.000 下午 DefaultQuartzScheduler_Worker-8 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:56:10,计数: 8

[INFO] 2011-07-11 02:56:10.000 下午 Thread-9 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:56:10

[INFO] 2011-07-11 02:56:10.000 下午 Thread-9 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:56:20.000 下午 DefaultQuartzScheduler_Worker-9 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:56:20.000 下午 DefaultQuartzScheduler_Worker-9 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:56:20,计数: 9

[INFO] 2011-07-11 02:56:20.000 下午 Thread-10 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:56:20

[INFO] 2011-07-11 02:56:20.000 下午 Thread-10 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:56:30.000 下午 DefaultQuartzScheduler_Worker-10 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:56:30.000 下午 DefaultQuartzScheduler_Worker-10 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:56:30,计数: 10

[INFO] 2011-07-11 02:56:30.000 下午 Thread-11 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:56:30

[INFO] 2011-07-11 02:56:30.000 下午 Thread-11 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:56:40.000 下午 DefaultQuartzScheduler_Worker-1 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:56:40.000 下午 DefaultQuartzScheduler_Worker-1 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:56:40,计数: 11

[INFO] 2011-07-11 02:56:40.000 下午 Thread-12 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:56:40

[INFO] 2011-07-11 02:56:40.000 下午 Thread-12 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:56:50.000 下午 DefaultQuartzScheduler_Worker-2 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:56:50.000 下午 DefaultQuartzScheduler_Worker-2 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:56:50,计数: 12

[INFO] 2011-07-11 02:56:50.000 下午 Thread-13 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:56:50

[INFO] 2011-07-11 02:56:50.000 下午 Thread-13 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:57:00.000 下午 DefaultQuartzScheduler_Worker-3 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:57:00.000 下午 DefaultQuartzScheduler_Worker-3 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:57:00,计数: 13

[INFO] 2011-07-11 02:57:00.000 下午 Thread-14 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:57:00

[INFO] 2011-07-11 02:57:00.000 下午 Thread-14 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:57:10.000 下午 DefaultQuartzScheduler_Worker-4 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:57:10.000 下午 DefaultQuartzScheduler_Worker-4 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:57:10,计数: 14

[INFO] 2011-07-11 02:57:10.000 下午 Thread-15 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:57:10

[INFO] 2011-07-11 02:57:10.000 下午 Thread-15 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:57:20.000 下午 DefaultQuartzScheduler_Worker-5 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:57:20.000 下午 DefaultQuartzScheduler_Worker-5 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:57:20,计数: 15

[WARN] 2011-07-11 02:57:20.000 下午 DefaultQuartzScheduler_Worker-5 [org.quartz.examples.example3.SimpleJob]
已经暂停了触发器...,触发器组名: group1,触发器名称: trigger3

[INFO] 2011-07-11 02:57:20.000 下午 Thread-16 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:57:20

[WARN] 2011-07-11 02:57:20.000 下午 Thread-16 [org.quartz.examples.example3.SchedEventLister]
暂停当前线程5秒钟后在恢复触发器...,触发器组名: group1,触发器名称: trigger3

[WARN] 2011-07-11 02:57:25.000 下午 Thread-16 [org.quartz.examples.example3.SchedEventLister]
正在恢复了触发器...,触发器组名: group1,触发器名称: trigger3

[INFO] 2011-07-11 02:57:30.015 下午 DefaultQuartzScheduler_Worker-6 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:57:30.031 下午 DefaultQuartzScheduler_Worker-6 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:57:30,计数: 16

[INFO] 2011-07-11 02:57:30.031 下午 Thread-17 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:57:30

[INFO] 2011-07-11 02:57:30.031 下午 Thread-17 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:57:40.000 下午 DefaultQuartzScheduler_Worker-7 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:57:40.000 下午 DefaultQuartzScheduler_Worker-7 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:57:40,计数: 17

[INFO] 2011-07-11 02:57:40.000 下午 Thread-18 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:57:40

[INFO] 2011-07-11 02:57:40.000 下午 Thread-18 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:57:50.000 下午 DefaultQuartzScheduler_Worker-8 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:57:50.000 下午 DefaultQuartzScheduler_Worker-8 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:57:50,计数: 18

[INFO] 2011-07-11 02:57:50.000 下午 Thread-19 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:57:50

[INFO] 2011-07-11 02:57:50.000 下午 Thread-19 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:58:00.000 下午 DefaultQuartzScheduler_Worker-9 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:58:00.000 下午 DefaultQuartzScheduler_Worker-9 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:58:00,计数: 19

[INFO] 2011-07-11 02:58:00.000 下午 Thread-20 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:58:00

[INFO] 2011-07-11 02:58:00.000 下午 Thread-20 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:58:10.000 下午 DefaultQuartzScheduler_Worker-10 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听启动....

[INFO] 2011-07-11 02:58:10.000 下午 DefaultQuartzScheduler_Worker-10 [org.quartz.examples.example3.SimpleJob]
任务分组名称: group1,任务名称: job3,触发器组名称: group1,触发器名称: trigger3 执行时间: 2011-07-11 02:58:10,计数: 20

[INFO] 2011-07-11 02:58:10.000 下午 Thread-21 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。2011-07-11 02:58:10

[ERROR] 2011-07-11 02:58:10.000 下午 DefaultQuartzScheduler_Worker-10 [org.quartz.examples.example3.SimpleJob]
正在停止并且移除触发器...,触发器组名: group1,触发器名称: trigger3

[INFO] 2011-07-11 02:58:10.000 下午 Thread-21 [org.quartz.examples.example3.SchedEventLister]
触发器线程监听中。。。。,状态:正常 

[INFO] 2011-07-11 02:59:56.828 下午 main [org.quartz.examples.example3.CronTriggerExample]
------- Shutting Down ---------------------

[INFO] 2011-07-11 02:59:56.828 下午 main [org.quartz.core.QuartzScheduler]
Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.

[INFO] 2011-07-11 02:59:56.828 下午 main [org.quartz.core.QuartzScheduler]
Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.

[INFO] 2011-07-11 02:59:56.828 下午 main [org.quartz.core.QuartzScheduler]
Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.

[INFO] 2011-07-11 02:59:56.828 下午 main [org.quartz.examples.example3.CronTriggerExample]
------- Shutdown Complete -----------------

[INFO] 2011-07-11 02:59:56.828 下午 main [org.quartz.examples.example3.CronTriggerExample]
Executed 20 jobs.
分享到:
评论

相关推荐

    关于quartz中CronTrigger的使用说明

    quartz中CronTrigger的使用方法,列举了比较详细的例子。希望对你有所帮助。

    Quartz CronTrigger配置说明

    Quartz CronTrigger配置说明Quartz CronTrigger配置说明Quartz CronTrigger配置说明Quartz CronTrigger配置说明

    Quartz 多任务和单任务实现java源码

    Quartz SimpleTrigger CronTrigger java 源码 多任务 单任务实现 jobQuartz SimpleTrigger CronTrigger java 源码 多任务 单任务实现 job

    quartz-all-1.6.6.jar

    quartz-all-1.6.6.jar ...否则报错 java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class

    CronTrigger

    spring quartz定时器的表达式

    springboot jpa quartz动态定时任务

    springboot jpa quartz 动态定时任务,任务增加,任务删除,任务修改demo,非常简单

    quartz定时任务使用例子大全

    这里面介绍了三种使用quartz定时任务的方式,第一种方式是完全使用代码写死的调用方式,第二种使用的是从数据库读取任务配置信息的调用方式,第三种是使用从数据库读取任务配置,生成CronTrigger的调用方式,...

    Quartz 表达式自动生成插件

    Quartz 表达式自动生成插件,可以自动CronTrigger表达式

    quartz_demo集合

    自己整理个一个quartz_demo集合,demo含CronTrigger方式、SimpleTrigger方式、spring集成CronTrigger方式、spring集成SimpleTrigger方式以及有状态作业方式。

    Quartz学习的eclipse项目的实例

    Quartz学习的eclipse项目的实例

    Quartz-Job-Scheduling-Framework-中文版-V0.9.1.zip

    内容提要:Quartz 从属性文件中加载多个插件类时不能保证加载的顺序,所以本节引入一个自定义的统一按顺序加载其他插件的,名之为插件加载器的东西,其实也就是其他插件类的父亲。 第八章. 使用 Quartz 插件 (第五...

    springboot整合quartz的demo

    springboot整合quartz的demo,实现了simpleTrigger和cronTrigger,具体功能如下:项目启动后,每隔两秒输出一串星号,每隔三秒输出一串#号,访问controller后,添加定时任务,十秒后输出访问者的ip

    quartz样例源代码

    1)与spring结合,创建crontrigger、simpletrigger 2)java代码实现quartz; 3)数据库持久化 3、使用说明 1)如果使用数据库持久化,请将conf\quartz.properties文件放到工程根目录下; 2)请初始化数据库,...

    quartz 日期定时器例子

    一个关于quartz定时器的例子,基于日历指定触发器,可以使用CronTrigger。使用CronTrigger可以实现类似的触发器,比如:每个星期五的下午。比如每个星期一,三和五的上午9点到10点之间每隔5分钟。 CronTrigger也有...

    demo-quartzExpress.rar(quartz表达式

    quartz表达式,可直接解压,使用java本地运行即可查看,编辑表达式,方便定时任务一目了然查看。cron表达式用于配置cronTrigger的实例。cron表达式实际上是由七个子表达式组成。这些表达式之间用空格分隔。

    quartz 包,源文件与 使用说明

    Quertz中提供了两类触发器为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几 点结束,隔多长时间执行,共执行多少次等,后者提供了使用表达式来描述定时功能,因此适用于比较复杂的...

    CH06-邮件发送.pptx

    Quartz框架的使用步骤是什么? SimpleTrigger和CronTrigger的区别是什么? 使用Spring整合Quartz的步骤是什么?

    spring学习

    学习了spring中aop原理,学习并实现简单的ioc注入,学习了一些关于quartz的用法(simpletrigger,crontrigger),简单的一些事务配置等

    demo-quartzExpress.rar

    quartz表达式,可直接解压,使用java本地运行即可查看,编辑表达式,方便定时任务一目了然查看。cron表达式用于配置cronTrigger的实例。cron表达式实际上是由七个子表达式组成。这些表达式之间用空格分隔。

    gitbucket-backup-plugin:为GitBucket提供所有备份功能

    gitbucket备份插件为GitBucket提供所有备份功能特征该插件为以下数据提供备份功能。 数据库内容用户存储库Wiki资料库发行和发布的附件用户头像数据并通过电子邮件... # Backup timing (Required)# For details, see ...

Global site tag (gtag.js) - Google Analytics