我是一名c ++工程师,所以请温柔! 我有一些启动进程的Java代码,但我想做的是暂停执行,直到新进程完成。
我如何用Java做到这一点?
由于
答案 0 :(得分:4)
假设您有一个Process
对象代表新创建的流程使用Process.waitFor()
,其中:
如果需要,使当前线程等待,直到此Process对象表示的进程终止。如果子进程已终止,则此方法立即返回。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。
Process
对象可以从以下地址获得:
ProcessBuilder.start()
Runtime.exec()
(其中有多次重载)。答案 1 :(得分:2)
如果“流程”是由java.lang.Process
获得的java.lang.Runtime
,则使用Process.waitFor()
只是为了完整性:通常在Java中,您使用线程,等待线程的选项是调用thread.join()
答案 2 :(得分:0)
Read the stream from Process
。在执行剩余代码之前,它将等待进程完成。
Process p = Runtime.getRuntime().exec("your command(process)", null, new File("path of process where to execute"));
InputStream is=p.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while (line != null) {
line = reader.readLine();
}
答案 3 :(得分:0)
如果我是对的,那么您正在尝试同步进程(线程)。
例如,如果你想在恢复主进程之前等待线程t1的完成,这里有一个想法:
Thread t1 = new MyThreadExample();
t1.start();
t1.join(); //wait for completion
/*
write what you want to do after completion
*/