quartz的线程池机制

在quartz里,有一个scheduler的properties文件,用于配置quartz框架运行时环境,其中有如下配置:


#============================================================================
# Configure ThreadPool
#============================================================================

org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=20
org.quartz.threadPool.threadPriority=5
org.quartz.threadPool.makeThreadsDaemons=true

这里的意思是我有一个线程池,每次触发时有20个线程被并发执行,如果将threadCount设为1,就意为着每次触发时只有一个线程被执行,所以就有一个问题:如果我的scheduler_jobs.xml文件里有两个JOB或者三四个,触发时间一样,都是:<cron-expression>0 0/2 * *,* * ?</cron-expression>,如这两个JOB的任务很简单,就是生成一个文件放在目录下,那么这两个JOB因为threadCount=1而不会并发执行,只能一个一个执行,也不会在每分钟同时触发,可是为什么测试的结果是它们好像同时触发了,而且生成的文件的时间是一样的,请教这怎么理解?

经过再测试,发现,threadCount=1确实不是同时触发,更不是并发执行;如果threadCount>1,才能保证两个或多个job能并发执行,这说明threadCount确实是并发执行线程数
[该贴被thinkjava于2009-09-21 17:26修改过]