2013-03-07 72 views
1

我有第三方獨立Java程序。我想從一個Java客戶端運行它,它將通過多個線程調用這個程序來實現並行執行。挑戰在於,這個第三方程序從環境變量中讀取配置參數。我不希望並行線程覆蓋對方的配置。另外,由於我的客戶端和第三方程序都是用Java編寫的,所以如果我可以避免創建多個JVM進程,那麼這將會帶來很大的附加價值。從多線程客戶端調用獨立Java程序

回答

1

您可以使用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