上篇博文中CallMaxentThreadPoolTask类直接使用Runtime.getRuntime().exec方法调用cmd命令,结果今天在测试时发现当cmd命令执
行出现错误或警告时,主控程序的waitfor方法会被阻塞一直等待下去,查了查资料发现是Runtime.getRuntime().exec方法需要自己处理
stderr 及stdout流,而解决方法即是将它们导出用别的thread处理。
会造成阻塞的代码:
解决方法:
其中StreamGobbler类的代码:
感谢http://faq.csdn.net/read/200584.html中提到的各位。
在使用Runtime.getRuntime().exec方法执行cmd命令时,如果命令执行出现错误或警告,主程序会因waitfor方法被阻塞。解决办法是通过创建StreamGobbler线程分别处理stderr和stdout,避免阻塞。具体实现包括创建StreamGobbler实例来读取并打印错误和输出流。
5184

被折叠的 条评论
为什么被折叠?



