博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Runtime.getRuntime().exec(cmd)的超时处理
阅读量:5740 次
发布时间:2019-06-18

本文共 637 字,大约阅读时间需要 2 分钟。

hot3.png

在使用Runtime.getRuntime().exec(cmd)执行某些系统命令,如nfs共享的mount时,会由于nfs服务异常等原因导致进程阻塞,使程序没法往下执行,而且也无法捕获到异常,相当于死在那里了。

Process process = Runtime.getRuntime().exec(cmd);process.waitFor();

祸根就是调用了waitFor()方法。

今天在lee79的博客里看到了一种解决方法,认为很神奇,记录一下简化并优化了逻辑的关键代码

long startTime = System.currentTimeMillis();boolean processFinished = false;while(System.currentTimeMillis()-startTime < CMD_TIME_OUT*1000        && !processFinished ){    try {        exitVal = process.exitValue();    } catch (IllegalThreadStateException e) {        Thread.sleep(DEFAULT_INTERVAL);        continue;    }    processFinished = true;}
  

 

 

转载于:https://my.oschina.net/fangwei/blog/717311

你可能感兴趣的文章
[LeetCode] Merge Intervals
查看>>
SharePoint 读取 Site Columns 的数据并绑定到DropdownList
查看>>
使用 axios 详解
查看>>
第 68 章 Logical Volume Manager (LVM)
查看>>
IPA提交APPStore问题记录(一)
查看>>
有利于seo优化的网站地图不能取巧
查看>>
快照产品体验优化
查看>>
ASCII
查看>>
ibatis SqlMap not found
查看>>
Android SD卡创建文件和文件夹失败
查看>>
Ubuntu 14.04 vsftp refusing to run with writable root inside chroot问题解决方法
查看>>
Intellij IDEA远程调试tomcat
查看>>
hadoop的学习论坛
查看>>
Struts2 学习小结
查看>>
烂泥:wordpress迁移到docker
查看>>
.扒渣机的性能及优势 
查看>>
Linux下磁盘保留空间的调整,解决df看到的空间和实际磁盘大小不一致的问题
查看>>
RSA 生成公钥、私钥对
查看>>
测试工具综合
查看>>
asp.net中调用COM组件发布IIS时常见错误 80070005解决方案
查看>>