私はC++のエンジニアですので、優しくしてください!! プロセスを開始する Java コードがいくつかありますが、新しいプロセスが完了するまで実行を停止したいと考えています。
Javaでこれを行うにはどうすればよいですか?
ありがとう
私はC++のエンジニアですので、優しくしてください!! プロセスを開始する Java コードがいくつかありますが、新しいプロセスが完了するまで実行を停止したいと考えています。
Javaでこれを行うにはどうすればよいですか?
ありがとう
Process
新しく作成されたプロセス use を表すオブジェクトがあると仮定すると、次のようになりますProcess.waitFor()
。
この Process オブジェクトによって表されるプロセスが終了するまで、必要に応じて現在のスレッドを待機させます。サブプロセスがすでに終了している場合、このメソッドはすぐに戻ります。サブプロセスがまだ終了していない場合、呼び出しスレッドはサブプロセスが終了するまでブロックされます。
Process
オブジェクトは以下から取得できます。
ProcessBuilder.start()
Runtime.exec()
(そのうちいくつかのオーバーロードがあります)。「プロセス」がjava.lang.Process
によって取得されるjava.lang.Runtime
場合は、次を使用しますProcess.waitFor()
完全を期すために: 通常、Java ではスレッドを操作します。スレッドを待機するオプションは、thread.join()
私が正しければ、プロセス (スレッド) を同期しようとしています。
たとえば、メイン プロセスを再開する前にスレッド t1 の完了を待ちたい場合は、次のようなアイデアがあります。
Thread t1 = new MyThreadExample();
t1.start();
t1.join(); //wait for completion
/*
write what you want to do after completion
*/
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();
}