Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Quartz作业是否在同一JVM中运行,并在各自的线程中运行?_Java_Quartz - Fatal编程技术网

Java Quartz作业是否在同一JVM中运行,并在各自的线程中运行?

Java Quartz作业是否在同一JVM中运行,并在各自的线程中运行?,java,quartz,Java,Quartz,Quartz scheduler用于在我的工作场所调度定时java作业。调度器本身作为应用程序部署到Weblogic服务器(一个计算机集群)。此调度器可以调度实现作业接口并重写execute()方法的作业。这些作业作为库部署到Weblogic服务器,然后由调度器使用。(一个库包含多个作业。) 我还没有找到关于这些作业如何运行或它们如何共享资源的信息来源。 我看了看石英,但找不到我要找的东西 我有多个问题,尽管我相信一个答案可能涵盖所有问题 通过调度程序创建的所有作业是否共享一个JVM?如果没有,

Quartz scheduler用于在我的工作场所调度定时java作业。调度器本身作为应用程序部署到Weblogic服务器(一个计算机集群)。此调度器可以调度实现作业接口并重写execute()方法的作业。这些作业作为库部署到Weblogic服务器,然后由调度器使用。(一个库包含多个作业。)

我还没有找到关于这些作业如何运行或它们如何共享资源的信息来源。 我看了看石英,但找不到我要找的东西

我有多个问题,尽管我相信一个答案可能涵盖所有问题

  • 通过调度程序创建的所有作业是否共享一个JVM?如果没有,那么根据分配给给定JVM的作业是什么
  • 我假设每个作业都分配了一个单独的线程,对吗
  • 如果所有计划的作业都在同一JVM中运行,并且每个作业都有自己的线程,那么使用不同参数并发执行同一作业将需要使作业线程安全,或者需要禁用作业的并发执行,不是吗
  • 谢谢。

    您可能想通过阅读了解石英的工作原理。回答您的问题:

  • 这取决于您是运行Quartz调度程序群集(即共享同一作业存储的多个Quartz调度程序实例)还是运行独立的Quartz调度程序实例。在集群部署中,单个Quartz调度程序实例通过创建DB行锁来竞争执行作业。首先设法创建行锁的调度程序实例是执行特定作业的调度程序实例。在独立的Quartz调度程序部署中,完成不存在,并且始终是单个Quartz调度程序实例执行所有作业

  • Quartz使用线程池,当它需要执行作业时,它只需从池中分配一个空闲线程并使用它执行作业。作业完成执行后,Quartz将线程返回池

  • Quartz作业实现类的实例不共享。这意味着,当Quartz即将执行作业时,它将实例化配置的类并调用其
    execute
    方法,将作业执行上下文作为参数传递给它。一旦作业执行完成,就会丢弃
    org.quartz.job
    实例,并最终进行垃圾收集,即quartz不会重用它。如果您的
    org.quartz.Job
    类声明/访问一些静态字段、单例等,那么您可能需要在必要时同步对这些共享资源的访问

  • 请阅读:。此外,这个问题可能更适合于其他人。