运行背景java程序

时间:2014-06-10 05:27:16

标签: java background-process

我正在尝试创建一个java应用程序,它在事件发生的某个点运行另一个java程序。由于我必须在后台运行此过程,因此我使用& 符号。这是应用程序的一部分。

private static void printLines(String name, InputStream ins) throws Exception {
    String line = null;
    BufferedReader in = new BufferedReader(new InputStreamReader(ins));
    while ((line = in.readLine()) != null) {
        System.out.println(name + " " + line);
    }
}

private static void runProcess(String command) throws Exception {
    Process pro = Runtime.getRuntime().exec(command);
    printLines(command + " stdout:", pro.getInputStream());
    printLines(command + " stderr:", pro.getErrorStream());
    // pro.waitFor();
    System.out.println(command + " exitValue() " + pro.exitValue());
}

runProcess("javac test2.java");
runProcess("java test2 "+id+" "+pass+" "+choice+" &");//Id,pass,choice are arguments of java program

我面临的问题是如果我打印的那行程序我的实际应用程序没有移动到下一部分,直到我的后台进程结束需要很长时间,如果我省略这些输出行,那么后台进程退出并且给出了这个错误:

java.lang.IllegalThreadStateException: process hasn't exited

如果我使用 pro.waitFor(); 那么又是第一个问题。我该怎么办?

0 个答案:

没有答案