java - 使用 ProcessBuilder 运行同一类的多个进程

标签 java multiprocessing processbuilder multiprocess

我想要一个主类,用户可以在其中定义他们想要启动的客户类进程的数量。我该如何解决这个问题?下面是我用来运行一次 Customer 类的代码。

try {       
        ProcessBuilder customer = new ProcessBuilder("java.exe","-cp","bin","lab_3.Customer");
        Process runCustomer = customer.start();

        runCustomer.waitFor();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

最佳答案

方法 1,克隆

我不知道这有多好,但是,你可以尝试做这样的事情:

ProcessBuilder customer = new ProcessBuilder("java.exe","-cp","bin","lab_3.Customer");
Process runCustomer = customer.clone().start();

.clone() 将复制它,然后从它开始进程。现在您可以执行以下操作:

ProcessBuilder customer = new ProcessBuilder("java.exe","-cp","bin","lab_3.Customer");
Process runCustomer1 = customer.clone().start();
Process runCustomer2 = customer.clone().start();
Process runCustomer3 = customer.clone().start();
Process runCustomer4 = customer.clone().start();

方法 2,参数数组

您还可以将参数存储在数组中,每次您想要启动新的 Process 时,您只需创建一个 ProcessBuilder 的新实例,如下所示:

String command = "java.exe";
String[] args = new String[]{ "-cp", "bin", "lab_3.Customer" };

for(int i = 0; i < numOfProcesses; i++) {
     new ProcessBuilder(command, args).start();
}

像这样,如果您需要存储创建的进程:

String command = "java.exe";
String[] args = new String[]{ "-cp", "bin", "lab_3.Customer" };
Process[] processes = new Process[numOfProcesses];

for(int i = 0; i < numOfProcesses; i++) {
     processes[i] = new ProcessBuilder(command, args).start();
}

关于java - 使用 ProcessBuilder 运行同一类的多个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805094/

相关文章:

python - 多处理进程是否必须在调用的函数结束时终止?

java - 打开 shell 并使用 Java 进行交互

java - ProcessBuilder 向命令行添加额外的引号

java - Swing - 启动浏览器并在用户关闭时收听

java - 更改语言环境就是修改我的应用程序的文本尺寸

java - lombok @Data 和 @Getter 不提供 getter 函数

python - 从 url 列表中下载 <very large> 页面的最佳方法是什么?

python - 如何更改进度条的位置 - 多重处理

java - 无法在 OS X 上初始化类 org.bytedeco.javacpp.avutil 以及 JavaCV 中的 Maven

java - Spring Social Twitter - 提及帐户时通知应用程序