java - Quartz 调度程序最大线程数属性

标签 java quartz-scheduler

我有以下情况:

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

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

这怎么可能?

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

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

我有这样的设计:

  1. 我们有一些任务在数据库中的实体上做一些工作
  2. 我们有执行一项任务的特殊 JobRunner
  3. 我们扫描要运行的任务并安排任务在配置了 SchedulerFactoryBean 且 org.quartz.threadPool.threadCount 设置为 5 的 quartz 服务中运行。
  4. 据我了解,如果带有 SchedulerFactoryBean 的 quartz 服务将运行 5 个任务,并且如果我们尝试安排其他任务, quartz 本身应该会抛出异常。这是真的吗?

谢谢。

最佳答案

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

这意味着如果您安排的 X 作业大于 threadCount 那么 K = X - threadCount 作业将最多等待一个misFired队列中等待 threadCount 作业完成。

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

关于java - Quartz 调度程序最大线程数属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986780/

相关文章:

java - 在 Java 中使用 quartz 进行作业链接

java - 带注释的单元测试 Controller

java - HttpURLConnection.getContentLength() 返回 -1

java - 工作恢复时 quartz 故障

java - quartz 调度器 : Trigger some jobs on every cluster node and some only once per cluster

java - 使用java spring mvc调度任务

java - 单击时翻转相对布局

java - COBOL 与服务器的连接在 VSCode 中关闭

java - Facelets 和 JSP 在同一个项目中?

scheduled-tasks - 在多个实例上访问 Quartz 中的计划作业