【问题标题】:Simultaneously run java programs run on same JVM?同时运行在同一个JVM上运行的java程序?
【发布时间】:2011-09-09 23:53:04
【问题描述】:

假设我在同一台机器上同时运行两个 java 程序。程序是在单个 JVM 实例中运行,还是在两个不同的 JVM 实例中运行?

【问题讨论】:

  • 它们可能共享 dll,甚至编译类(取决于实现和配置)。

标签: java jvm


【解决方案1】:

如果您使用java 命令(从命令行)启动每个命令,它们将作为完全独立的JVMs 运行。

“程序”可以作为单独的 Threads 在一个 JVM 中运行。

【讨论】:

  • 取决于供应商,但适用于 windows/Linux/OS x 的标准 Oracle JVM
【解决方案2】:

java 一次只能打开启动一个应用程序,但您可以编写一个简单的launcher,它将类名作为参数并在单独的线程中执行它们。简要概述:

public class Launcher {
  public static void main(String[] args) throws Exception {
    for (int i = 0; i<args.length; i++) {
      final Class clazz = Class.forName(args[i]);
      new Thread(new Runnable() {
        @Override
        public void run() {
           try{
             Method main = clazz.getMethod("main", String[].class);
             main.invoke(null, new Object[]{});
           } catch(Exception e) {
             // improper exception handling - just to keep it simple
           }
        }
      }).start();
    }
  }
}

这样称呼它

  java -cp <classpath for all applications!> Launcher com.example.App1 com.example.App2

应该在同一个虚拟机中并行执行应用程序 App1 和 App2。

【讨论】:

    【解决方案3】:

    假设您用词程序来表示进程,那么是的,启动两个进程将创建两个不同的 JVM。

    使用 java 应用程序启动器启动 JVM 进程;这应该为您的程序提供一个入口点,这是主要方法。您可以从这个入口点链接到其他类,也可以从其他类链接到其他类。这将继续在同一个 JVM 进程中发生,除非您启动另一个进程(以运行另一个程序)。

    【讨论】:

      【解决方案4】:

      这取决于平台和 JVM 实现,但通常它们会在不同的 VM 中运行。

      【讨论】:

        【解决方案5】:

        程序会在单个 JVM 实例中运行,还是会在两个不同的 JVM 实例中运行?

        这取决于你。最简单的方法是使用单独的 JVM。

        【讨论】:

          【解决方案6】:

          您可以做的是使用两个单独的线程。例如

          new Thread() {
            public void run() {
             System.out.println("this is running separately from the main thread!");
            }
          }.start();
          

          如果你想让两个独立的程序交互,你需要使用套接字

          【讨论】:

            猜你喜欢
            • 2014-09-20
            • 2015-07-26
            • 1970-01-01
            • 1970-01-01
            • 2017-02-23
            • 2013-08-26
            • 2020-10-13
            • 2020-12-10
            • 1970-01-01
            相关资源
            最近更新 更多