我有第三方独立Java程序。我想从Java客户端运行它,它将通过多个线程调用该程序来实现并行执行。挑战在于,此第三方程序从环境变量中读取配置参数。我不希望并行线程覆盖彼此的配置。此外,由于我的客户端和第三方程序都是用Java编写的,如果我可以避免创建多个JVM进程,那么它将是很有价值的补充。
答案 0 :(得分: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
。