同时运行在同一JVM上运行的Java程序?

2022-09-01 17:19:17

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


答案 1

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

“程序”可以作为在一个JVM内运行的单独线程启动。


答案 2

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

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

应在同一 VM 内并行执行应用程序 App1 和 App2。


推荐