2013-07-17 33 views
0

我是C++工程师,请温和! 我有一些启动进程的Java代码,但我想要做的是暂停执行,直到新进程完成。如何等待流程完成

如何在Java中执行此操作?

由于

+0

可能重复(HTTP:/ /stackoverflow.com/questions/654525/implement-wait-between-processes-in-java) – m0skit0

+0

你是如何从Java开始一个进程的? –

回答

4

假设你有一个Process对象,它表示新创建的进程使用Process.waitFor(),其中:

导致如果需要,当前线程等待,直到该过程由该Process对象表示已终止。如果子进程已经终止,则此方法立即返回。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。

Process对象可以从获得。

+0

谢谢 - 这就是我一直在寻找的东西 – user1414413

2

如果一个“过程”是java.lang.Runtime获得java.lang.Process,然后用Process.waitFor()

只是为了完整起见:通常在Java中,你使用线程,并选择等待线程致电thread.join()

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(); 
    } 
0

如果我是对的,您正在尝试同步进程(线程)。

举例来说,如果你想在这里重新开始你的主要过程之前等待你的线程T1的完成是一个想法:[?用Java实现进程间的等待]的

Thread t1 = new MyThreadExample(); 
t1.start(); 
t1.join(); //wait for completion 
/* 
    write what you want to do after completion 

*/