Quartz调度程序最大线程计数属性

时间:2012-01-24 12:27:14

标签: java quartz-scheduler

我有以下情况:

计划在org.quartz.threadPool.threadCount设置为5的情况下运行的8个任务。

但实际上我可以看到所有8个任务都在运行。

这怎么可能?

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

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

我有这样的设计:

  1. 我们有一些任务可以对db
  2. 中的实体进行一些操作
  3. 我们有专门的JobRunner执行一项任务
  4. 我们扫描要运行的任务,并安排在使用SchedulerFactoryBean并将org.quartz.threadPool.threadCount设置为5的石英服务中运行的任务。
  5. 据我了解,如果使用SchedulerFactoryBean的石英服务将运行5个任务,并且如果我们将尝试安排其他任务石英本身应该抛出异常。这是真的吗?
  6. 感谢。

1 个答案:

答案 0 :(得分:12)

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

这意味着如果您安排大于 threadCount X 作业,那么 K = X - threadCount 作业最多会等待 misFired threadCount 作业的某种队列中的强>毫秒,以完成。

因此,预定作业总数(或任务)可能队列中的等待任务数+正在运行的任务数正在运行的任务数小于或等于 threadCount