process.waitfor

今天在使用Runtime.getRuntime.exec(command)调用系统命令后。
使用Process.waitFor()来等待命令执行结束。
后来发现阻塞。
这个方法会让线程一直等待下去。
参考了各路大神的提醒后。
终于解决了这个问题
贴上代码

Runtime r = Runtime.getRuntime();
Process p = r.exec(command);
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
p.waitFor();

原因是因为Process的InputStreamSize是有限的,如果不及时处理掉就会把程序block住。