2013-07-17 77 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 

*/