2012-01-24 63 views
8

我有以下情况:Quartz调度最大线程数属性

8的任务计划与org.quartz.threadPool.threadCount一套运行于5

但在现实中,我可以看到,所有的8个任务正在运行。

这怎么可能?

如果我设置了org.quartz.threadPool.threadCount=5并且我提交了10个石英任务,确实只有5个任务可以并行运行?

org.quartz.threadPool.threadCount属性是什么意思?

我有这样的设计:

  1. 我们有一些任务是做数据库的实体一些工作
  2. 我们必须执行一个任务特殊JobRunner
  3. 我们扫描运行的任务和计划任务用于配置SchedulerFactoryBean的石英服务,其配置为org.quartz.threadPool.threadCount,设置为5.
  4. 正如我所了解的,如果使用SchedulerFactoryBean的石英服务将运行5个任务,并且如果我们将尝试安排额外的任务石英本身应抛出n例外。这是真的?

谢谢。

+2

当你说所有8个工作都在运行时,你的意思是'调度器。 getCurrentlyExecutingJobs()'返回一个8个工作列表?或者他们都将输出发送到System.out?或者是什么? –

+0

我编辑了故事的描述。因此,如果我为Scheduler安排了8个任务并设置了threadCount = 2,那么这是否意味着2个线程将运行8个任务潜水时间和changin上下文? – user253202

回答

12

确实,QUARTZ的org.quartz.threadPool.threadCount只是并发/并行执行的最大数量。

这意味着,如果您安排大于THREADCOUNTX就业再K = X - THREADCOUNT作业将最多等待一个失火毫秒某种队列THREADCOUNT作业完成。

因此计划作业总数(或任务)可能是队列中的等待任务的数量+正在运行的任务的数量。用运行任务的数量小于或等于threadCount

+0

有可能是2项工作使用相同的螺丝? –