为多个进程运行java runtime.exec()

Vig*_*ran 4 java runtime.exec

在我的程序中,我有一个n项目列表.

我将迭代列表并启动这样的过程:

Runtime.getRuntime.exec("cmd /C start abc.bat"+listitem() )
Run Code Online (Sandbox Code Playgroud)

我需要保持4个进程的计数.完成任何一个过程后,我需要启动下一个过程,因此过程计数应为4.

我能够同时启动4个进程,但不确定如何保持4的计数.基本上我需要一个通知,一旦进程终止,所以我可以开始下一个,任何线程都是可能的.

有关如何实现这一点的任何帮助,有人可以分享上述要求的片段吗?

Tim*_*der 12

使用ThreadPoolExecutor大小为4的Runnable实现,Process然后启动然后调用Process.waitFor().由于线程池将被限制为4个线程,并且所有4个线程将启动进程然后等待它,您将确定不会有超过4个子进程在运行.

一些示例代码可以帮助您:

ExecutorService executor = Executors.newFixedThreadPool(4);

executor.execute(new Runnable() {
    public void run() {
        //use ProcessBuilder here to make the process
        Process p = processBuilder.start();
        p.waitFor();
    }
});
Run Code Online (Sandbox Code Playgroud)