我有以下情况:
计划运行 8 个任务,org.quartz.threadPool.threadCount
设置为 5。
但实际上我可以看到所有 8 个任务都在运行。
这怎么可能?
如果我设置 org.quartz.threadPool.threadCount=5
并且我为 quartz 提交了 10 个任务,真的只有 5 个任务会并行运行吗?
org.quartz.threadPool.threadCount
属性是什么意思?
我有这样的设计:
- 我们有一些任务在数据库中的实体上做一些工作
- 我们有执行一项任务的特殊 JobRunner
- 我们扫描要运行的任务并安排任务在配置了 SchedulerFactoryBean 且
org.quartz.threadPool.threadCount
设置为 5 的 quartz 服务中运行。 - 据我了解,如果带有 SchedulerFactoryBean 的 quartz 服务将运行 5 个任务,并且如果我们尝试安排其他任务, quartz 本身应该会抛出异常。这是真的吗?
谢谢。
最佳答案
确实QUARTZ的org.quartz.threadPool.threadCount只是并发/并行执行的最大数量。
这意味着如果您安排的 X 作业大于 threadCount 那么 K = X - threadCount 作业将最多等待一个misFired在某种队列中等待 threadCount 作业完成。
因此,计划作业总数(或任务)可能是队列中等待任务的数量 + 正在运行的任务数量。 正在运行的任务数小于或等于threadCount。
关于java - Quartz 调度程序最大线程数属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986780/