等待完成的Java进程

时间:2012-04-10 11:42:49

标签: java process

我有一个调用可执行jar的java应用程序(主体):

Process p = Runtime.getRuntime().exec(java -jar C:\\PFC\\maestro.jar)
p.waitFor();

maestro.jar是一个创建2个线程的Java应用程序,并调用另一个可执行jar(Process变量为“b”)。然后我像这样等待他们:

    b.destroy();  //kill other executable jar that is called
    manejadora.join();  //thread finished
    controlador.join();  //thread finished
    System.out.println("all finished");

maestro.jar运行正确,当我运行时它在eclipse上显示“已终止”,所以没有问题。

当principal尝试运行maestro.jar时,它正确运行,但是当maestro.jar已经完成时,principal继续在“p.waitFor()”上等待maestro.jar。

我不明白为什么。

你可以给我一些关于这个的方向吗?非常感谢!

2 个答案:

答案 0 :(得分:3)

这可能是因为进程可能在控制台上输出了您没有在单独的线程中消耗的内容。阅读这篇文章了解更多信息:

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

apache exec库可以很好地完成所有这些工作..使用该库来解决您的问题..

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

答案 1 :(得分:0)

问题解决了。

我不得不退出所有“System.out.println();”句子。

所以我必须做一个日志才能看到程序活动。

谢谢大家: - )