【问题标题】:Quartz scheduler max thread count propertyQuartz 调度程序最大线程数属性
【发布时间】:2012-01-24 12:27:14
【问题描述】:

我有以下情况:

8 个任务计划运行,org.quartz.threadPool.threadCount 设置为 5。

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

这怎么可能?

如果我设置org.quartz.threadPool.threadCount=5 并为quartz 提交了10 个任务,真的只有5 个任务会并行运行吗?

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

我有这样的设计:

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

谢谢。

【问题讨论】:

  • 当您说所有 8 个作业都在运行时,您的意思是 scheduler. getCurrentlyExecutingJobs() 返回一个包含 8 个作业的列表吗?或者他们都将输出发送到 System.out?还是什么?
  • 我编辑了故事的描述。那么如果我为 Scheduler 安排 8 个任务并设置 threadCount=2,是否意味着 2 个线程将运行 8 个任务,潜水时间和上下文变化?

标签: java quartz-scheduler


【解决方案1】:

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

这意味着如果您安排的 X 个作业大于 threadCount,则 K = X - threadCount 作业最多会等待一个 misFired 在某种 queue 中完成 threadCount 作业的毫秒数。

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

【讨论】:

    猜你喜欢
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多