【问题标题】:Scheduling jobs in Quartz as a process将 Quartz 中的作业调度为进程
【发布时间】:2015-01-30 08:17:55
【问题描述】:

quartz 中的作业是作为进程还是线程执行?

如果它作为线程执行,那么在执行繁重的作业或耗时的作业时会影响石英调度器的性能。

如果是,请提出解决方案。

如果我们同时执行 10 个耗时的作业,效果如何?

我阅读了教程,但没有找到解决方案。 请提出解决方案。

谢谢。

【问题讨论】:

标签: quartz-scheduler


【解决方案1】:

阅读有关Configuring the thread pool 的文档,其中解释了石英线程池如何满足您的需求。更具体地说,org.quartz.threadPool.threadCount 配置属性可以根据文档说明根据您的需要进行设置:

可用于并发执行作业的线程数。你 可以指定任何正整数,但只能指定 1 到 100是实用的。如果你只有几个工作会解雇几次 一天,那么一个线程就足够了。如果你有数以万计的工作, 每分钟有很多次触发,那么你想要一个线程数更像 50 或 100(这在很大程度上取决于您的工作性质 作业执行,以及您的系统资源)。

在您提到的关于同时触发 10 个作业的具体示例中,如果您将上述属性配置为超过 10 个线程,则每个作业将在自己的线程上同时运行。否则,如果你配置的少,一些会先启动,而另一些会等待线程可用。如果在配置的时间段之前没有线程可用,您设置的 misfire 指令将处理要采取的操作,这通常是尽快触发延迟作业,但这也是一个可配置的设置。

【讨论】:

  • 没有。我不确定你为什么要这样做。您确定您完全了解其中的区别吗?线程是轻量级的,进程需要自己的内存空间,实际上你需要运行多个 jvm 才能拥有多个 java 进程。检查docs.oracle.com/javase/tutorial/essential/concurrency/…java67.blogspot.gr/2012/12/…
  • 是的,我知道线程和进程之间的区别。但我的要求是如果一个线程很耗时或挂起,那么我的其他工作不应该受到影响。
  • 如果假设我的调度程序由于其中一个线程而变慢,会不会影响其他作业。
猜你喜欢
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多