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

Java 使用ProcessBuilder运行同一类的多个进程,java,multiprocessing,processbuilder,multiprocess,Java,Multiprocessing,Processbuilder,Multiprocess,我想要一个主类,用户在其中定义他们想要启动多少客户类流程。我该如何解决我的主要问题?下面是我用来运行Customer类一次的代码 try { ProcessBuilder customer = new ProcessBuilder("java.exe","-cp","bin","lab_3.Customer"); Process runCustomer = customer.start(); runCustomer.waitFor(

我想要一个主类,用户在其中定义他们想要启动多少客户类流程。我该如何解决我的主要问题?下面是我用来运行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,参数数组 您还可以将参数存储在一个数组中,每次您想要启动新的
进程
,您只需创建一个
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();
}

一个
for
循环应该可以做到这一点。
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();
}