有没有办法在当前的java程序中运行新线程(JVM)?
假设我有程序mainApp.jar会启动什么: “java -jar C:/myjar/app1.jar -param 001” “java -jar C:/myjar/app2.jar -param 001” “java -jar C:/myjar/app3.jar -param 001”
但我需要在新线程(新JVM)中使用app1,app2,app3。
现在我尝试Runtime.getRuntime()。exec和ProcessBuilder
第一种方法:ProcessBuilder
ProcessBuilder pb = new ProcessBuilder("java", "-jar" "C:/myjar/app1.jar -p 001");
pb.inheritIO();
pb.redirectError();
Process ps = pb.start();
第二种方法:运行时
Process p = Runtime.getRuntime().exec("java -jar app1.jar -i 100",null,new File("C:/myjar"));
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
LOG.info("LOG : " + line);
}
两种方法都有效,但是它们在同一个线程中启动我的app1.jar。有没有办法将app1.jar,app2.jar作为新的JVM启动?
系统:Windows Server 2012, IntelliJ Idea 15.0.4