[英]Start a Java process at low priority using Runtime.exec / ProcessBuilder.start?
[英]How to pause process run using Java's ProcessBuilder.start()?
好的,所以我正在編寫這個程序,它基本上為我批量運行其他 java 程序(多次,不同的參數,並行執行等)。
到目前為止,運行部分效果很好。 使用 ProcessBuilder's.start() 方法(相當於我相信的 Runtime.exec() ),它會創建一個單獨的 java 進程並關閉它。
問題是我希望能夠在這些進程啟動后暫停/停止這些進程。 使用簡單的線程,這通常很容易做到,但是外部進程似乎沒有任何用於等待/睡眠的內置功能,至少從外部角度來看沒有。
我的問題是:有沒有辦法暫停 java.lang.Process object? 如果沒有,是否有人知道任何包含此功能的相關 exec 庫? 排除所有這些,擴展 Process 是一個更可行的選擇嗎?
我的問題是:有沒有辦法暫停 java.lang.Process object?
您可能已經發現,標准 API 不支持此功能。 例如Process
沒有提供suspend()
/ resume()
方法。
如果沒有,是否有人知道任何包含此功能的相關 exec 庫?
在 POSIX 兼容的操作系統(例如 GNU/Linux 或 Mac OS)上,您可以使用另一個系統調用(使用Runtime.exec
、 ProcessBuilder
或一些本機實現的庫)來發出kill
命令。
使用kill
命令,您可以發送信號,例如SIGSTOP
(暫停進程)和SIGCONT
(恢復進程)。
您將需要創建一個用於在進程之間發送消息的系統。 你可以這樣做:
根據您的描述(復雜批處理環境中的所有 Java 程序),我建議 #3,TCP/IP 通信。
雖然它肯定涉及額外的工作,但它也使您可以靈活地在不同進程之間發送您想要的任何類型的命令或信息。
Process 表示在機器上運行的一個單獨的進程。 Java 絕對不允許您通過 java.lang.Process 暫停它們。 您可以使用Process.destroy()強制停止它們。 對於暫停,您將需要生成進程的合作。
這些是什么類型的過程? 你寫的嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.