执行脚本实现超时时间控制 ---Process

来源:互联网 发布:mac adb 安装 编辑:程序博客网 时间:2024/05/08 21:23

    我们知道,Runtime.getRuntime().exec(.....)方法返回一个Process类的对象proc,通过proc可以获取连接服务器的状态。

    proc.exitValue()方法返回执行的结果,0为执行成功,1为执行失败,但是如果脚本未执行完,就调用exitValue()方法获取脚本执行情况会报IllegalThreadStateException异常。而proc.waitFor()方法则一直阻塞到执行结束然后返回执行结果,0为执行成功,1为执行失败。

    proc.waitFor()方法有时会出现线程卡住的情况,这里要搞清执行失败和卡死的区别,执行失败是服务器端返回响应,但是客户端能识别,只不过返回的是包含错误消息的响应。卡死的情况比如执行服务器连接脚本,会出现下面一种情况:

    假设执行SCM连接脚本,但用户输入的HOST和Port不是一个SCM地址,而是一个实际存在的FTP地址,客户端向服务器端发送请求,由于服务器端有响应,但是它又不能识别该响应,所以一直发送请求,这就会出现线程卡住的情况,导致该脚本一直执行。

    看来如果有以上情况存在还是不能用proc.waitFor(),只能用proc.exitValue()了,但是如何控制响应时间呢,比如服务器端返回响应的时间小于30秒,想设置个响应超时时间,该如何解决呢?

    方案1:在SCM脚本的批文件中设置JVM网络连接超时时间(这种方法待解决....,不知JVM的网络连接超时时间如何设置,望大虾赐教)

    方案2:设置Runtime的执行时间(这种方法也未成功)

    方案3:定时器Timer怎么样?

     也许会想到Timer定时器,但是这里提供一种极简便的方法。那就是用while来实现,代码如下:

   

 

 

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑账号删除后电脑开不了怎么办 lol不小心融错了皮肤怎么办 农村医保交费了没有录入系统怎么办 电动三轮车在泗阳被交警扣了怎么办 环评证实际的设备少报了怎么办 别人盗用了自己的社保卡怎么办 如果有人盗用社保卡信息住院怎么办 丈夫出轨生下孩子妻子该怎么怎么办 l老公偷着儿子消失了怎么办 老婆出轨怀孕现在流了他跑了怎么办 交通银行贷款资金户里面的钱怎么办 新车2个月出现好多小毛病怎么办 地上终末之日尸潮破坏房子怎么办 初一数学期未考试考了77分怎么办 生育服务单再婚婚史情况怎么办 我孩子的数学一直很差怎么办呀! 扶桑花的叶子出斑点发黄怎么办 高二的学生成绩下降特别大怎么办 六个月大的宝宝咳嗽伴有气喘怎么办 昨天奶用力吸今天好疼怎么办 律师把医院的医药费单子丢了怎么办 母亲是个不明事理的人怎么办 华西医院的就诊卡掉了怎么办 整形医院把我脸上疤痕被大了怎么办 牙齿缝里的东西很臭怎么办 五岁宝宝牙齿有空洞斑点怎么办 给别人担保贷款被起诉了怎么办 不小心在微信里登录江西移动怎么办 住院出院后医保卡在医院怎么办 医院门诊做完检查医生下班了怎么办 退税的发票勾选为抵扣的发票怎么办 买完邮轮票后护照换了怎么办? 朝阳医院挂号过了取号时间怎么办 苹果4的id密码忘了怎么办 ipad己停用5分钟后再试怎么办 手机上大智慧日线失真怎么办 安卓手机突然地图信号弱怎么办 魔兽争霸对战模式没有金币要怎么办 常州号码被标记了商铺的名字怎么办 车提档了不接收怎么办公司能收回吗 稳岗补贴如果联系方式填错了怎么办