[英]How to use multiprocessing with Java - NOT multithreading
我一直在尋找一個簡單的基於java的多處理api,但找不到任何東西。
我有遺留代碼,我需要將其集成到我的Java應用程序中。 由於這個遺留(本機)代碼有時崩潰,整個jvm崩潰了。 所以我想要做的是在不同的進程(而不是線程!)中運行此代碼及其適配器。
在較新的java jdks中有ProcessBuilder,它允許您啟動一個新進程並為您提供In / Outputstream; 所以解決我的問題是可以手工完成的。 為此,您必須找到jvm的路徑並使用for process啟動它。 然后你必須使用流進行通信。
有什么東西可以接管這份工作嗎? 或者我真的需要手工完成嗎?
AFAIK,人們通常手工做到這一點。
問題在於沒有真正可移植的方式......難以(不可能)識別當前運行的JVM的啟動位置,以及JVM命令行選項是供應商,版本和(可能)的事實特定平台。
簡單的解決方案就是將用於啟動子JVM的JVM路徑和選項放入某個配置文件中。
您可以使用-Dprocess.name = $ 1並讓主類接受一些命令行參數。 您可以通過調用以下內容來調用:
java -cp $ CLASSPATH $ VM_ARGS $ MAIN_CLASS
並且您的VM_ARGS可以定義為
VM_ARGS =“ - Dprocess.name = $ 1”
FWIW,我在david.tribble.com/src/java/tribble/util/RuntimeExec.java編寫了一個替換類來處理大量的I / O流重定向錯誤。
您正在尋找稱為Java RMI(Remolt方法調用)的技術。
這允許一個JVM在另一個JVM中調用方法。 這可以在同一台機器上或通過網絡。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.