quartz执行时间的测试

quartz的trigger时间是“每秒执行一次”,

QuartzManager.addJob(jobName, job, "0/1 * * * * ?");

 

job的执行时间是“每次执行30秒”

public void execute(JobExecutionContext jobExecutionContext)
			throws JobExecutionException {

		System.out.println(value + "_" + Thread.currentThread().getName()
				+ "__" + hashCode() + ",执行时间:" + new Date());

		try {
			//模拟执行30秒
			Thread.sleep(30L * 1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

 

quartz的配置,线程池中只有一个线程:

org.quartz.threadPool.threadCount = 1

 

实际测试结果:

【系统启动】
2013-1-25 9:25:55 org.quartz.simpl.SimpleThreadPool initialize
信息: Job execution threads will use class loader of thread: main
2013-1-25 9:25:55 org.quartz.core.QuartzScheduler <init>
信息: Quartz Scheduler v.1.5.2 created.
2013-1-25 9:25:55 org.quartz.simpl.RAMJobStore initialize
信息: RAMJobStore initialized.
2013-1-25 9:25:55 org.quartz.impl.StdSchedulerFactory instantiate
信息: Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
2013-1-25 9:25:55 org.quartz.impl.StdSchedulerFactory instantiate
信息: Quartz scheduler version: 1.5.2
2013-1-25 9:25:55 org.quartz.core.QuartzScheduler start
信息: Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
aaaa_DefaultQuartzScheduler_Worker-0__821556544,执行时间:Fri Jan 25 09:25:55 CST 2013
aaaa_DefaultQuartzScheduler_Worker-0__1139773783,执行时间:Fri Jan 25 09:26:25 CST 2013

 

并没有每秒都执行,而是每30秒执行一次。

 

经验:

1.“调度”应该和“执行”分开,中间附加“消息队列”

 

猜你喜欢

转载自lcp19840214.iteye.com/blog/1775478