在java

时间:2017-10-03 18:07:30

标签: java processbuilder runtime.exec

有没有办法在当前的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

0 个答案:

没有答案