2014-12-02 50 views
0

石英中的工作是作为进程还是线程执行?Quartz中的计划任务作为一个过程

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

如果是的话请提出解决方案。

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

我看了教程,但没有找到解决方案。 请建议解决方案。

谢谢。

+0

[如何缩放Quartz scheduler?](http://stackoverflow.com/questions/931662/how-to-scale-the-quartz-scheduler) – 2014-12-02 06:51:05

回答

0

阅读有关Configuring the thread pool的文档,其中解释了石英螺纹槽如何适合您的需求。更具体地说,org.quartz.threadPool.threadCount配置属性可根据您的需要设置,如文档说明:

可用于并行执行作业的线程数。您可以指定任何正整数,但只有1和 100之间的数字是实用的。如果你只有几件作业几天发火,那么一条线就足够了。如果你有数以万计的工作,并且每分钟都有很多人发射,那么你想要一个线程数更像是 50或100(这很大程度上取决于你工作执行的工作性质以及系统资源)。

在你提到的关于10个作业同时触发的具体例子中,如果你已经配置了超过10个线程的上述属性,那么每个作业将在它自己的线程上同时运行。否则,如果您配置较少,有些将首先启动,其他则等待线程变为可用。如果直到配置的时间段内没有线程可用,则您设置的失火指令将处理要采取的操作,这通常会尽快触发延迟的作业,但这也是可配置的设置。

+0

作为一个进程,我们可以执行作业吗?比线程? – Nikita 2014-12-05 10:06:24

+0

不,我不确定你为什么想这样做。你确定你完全知道这个区别吗?线程是轻量级的,进程需要自己的内存空间,并且实际上有多个jvms正在运行,以便拥有多个java进程。查看https://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html和http://java67.blogspot.gr/2012/12/what-is-difference-between-thread-vs-process -java.html – Marios 2014-12-05 10:23:11

+0

雅我知道线程和进程之间的区别。但我的要求是,如果一个线程耗时或挂起,那么我的其他工作不应该受到影响。 – Nikita 2014-12-09 06:08:25