1
我有第三方獨立Java程序。我想從一個Java客戶端運行它,它將通過多個線程調用這個程序來實現並行執行。挑戰在於,這個第三方程序從環境變量中讀取配置參數。我不希望並行線程覆蓋對方的配置。另外,由於我的客戶端和第三方程序都是用Java編寫的,所以如果我可以避免創建多個JVM進程,那麼這將會帶來很大的附加價值。從多線程客戶端調用獨立Java程序
我有第三方獨立Java程序。我想從一個Java客戶端運行它,它將通過多個線程調用這個程序來實現並行執行。挑戰在於,這個第三方程序從環境變量中讀取配置參數。我不希望並行線程覆蓋對方的配置。另外,由於我的客戶端和第三方程序都是用Java編寫的,所以如果我可以避免創建多個JVM進程,那麼這將會帶來很大的附加價值。從多線程客戶端調用獨立Java程序
您可以使用ProcessBuilder
,並填充由environment()
方法返回的映射。
ProcessBuilder builder = new ProcessBuilder("java -cp . Foo");
Map<String, String> environment = builder.environment();
environment.put("Foo", "Bar");
environment.put("X", "Y");
Process process = builder.start();
由於每個過程都有自己的環境,所以應該是安全的。可以使用Runtime.exec
。