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

在使用Runtime.getRuntime().exec方法执行cmd命令时,如果命令执行出现错误或警告,主程序会因waitfor方法被阻塞。解决办法是通过创建StreamGobbler线程分别处理stderr和stdout,避免阻塞。具体实现包括创建StreamGobbler实例来读取并打印错误和输出流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

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

 

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

 

会造成阻塞的代码:

 

 

解决方法:

 

其中StreamGobbler类的代码:

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值