簡體   English   中英

使用ProcessBuilder在Java中進行多重處理

[英]Multiprocessing in Java Using ProcessBuilder

我正在一個需要多次在MAC OS中運行shell文件的項目上工作。 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() ,則您將缺少p1.waitFor()p2.waitFor()來真正在子進程運行時使主進程保持活動狀態。 因此,當您的JVM關閉時,它也會殺死您啟動的進程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM