现在的位置: 首页 > 综合 > 正文

Runtime.getRuntime().exec执行阻塞问题解决

2013年08月05日 ⁄ 综合 ⁄ 共 1575字 ⁄ 字号 评论关闭

上篇博文中CallMaxentThreadPoolTask类直接使用Runtime.getRuntime().exec方法调用cmd命令,结果今天在测试时发现当cmd命令执

 

行出现错误或警告时,主控程序的waitfor方法会被阻塞一直等待下去,查了查资料发现是Runtime.getRuntime().exec方法需要自己处理

 

stderr 及stdout流,而解决方法即是将它们导出用别的thread处理。

 

会造成阻塞的代码:

 

 

解决方法:

 

其中StreamGobbler类的代码:

 

 

感谢http://faq.csdn.net/read/200584.html中提到的各位。

 

抱歉!评论已关闭.