在运行外部脚本时,我想同时和单独读取该脚本的ErrorStream和OutputStream,然后进一步处理它们。因此,我为其中一个流启动一个Thread
。不幸的是,进程似乎没有等待线程终止,而是在非线程流没有进一步输入后返回。
简而言之,这就是我正在做的事情:
ProcessBuilder pb = new ProcessBuilder(script);
final Process p = pb.start();
new Thread(new Runnable() {
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
...read lines and process them...
}
}).start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
...read lines and process them...
int exitValue = p.waitFor();
p.getOutputStream().close();
return exitValue;
是否有可能waitFor
Thread
被终止?
最佳答案
您可以使用Thread.join(...)
来等待Thread
完成。请注意,如果当前线程在您等待的线程完成之前收到中断,则调用会抛出 InterruptedException
。
关于java - Process.waitFor() 一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15482492/