我正在一个需要多次在MAC OS中运行外壳文件的项目上工作。 Shell文件将每次运行的结果写在单独的日志文件中。为了加快处理速度,我必须使用计算机中所有可用的内核。我试图使用Java中的BuildProcess来做到这一点。它可以正常工作几秒钟,但过程会在几秒钟后停止。在单核计算机上运行时,每个过程大约需要18个小时。例如,如果运行以下命令,它将启动两个进程并使它们运行约10秒钟,但是它们将被杀死而不会出错!

ProcessBuilder pb1 = new ProcessBuilder("/bin/bash", "runFS.sh")
Process p1 = pb1.start()

ProcessBuilder pb2 = new ProcessBuilder("/bin/bash", "runFS.sh")
Process p2 = pb2.start();


非常感激任何的帮助。

最佳答案

如果您的示例代码不胜枚举,那么您就缺少p1.waitFor()p2.waitFor()来真正使主进程在子进程运行时保持活动状态。因此,当您的JVM关闭时,它也会杀死您启动的进程。

关于java - 使用ProcessBuilder在Java中进行多重处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17481637/

10-13 04:33