我们在调用Process的waitFor()时经常会遇到明明Process已经结束了,但是waitFor()还是阻塞在那里,那是因为Process的inputStream缓存造成的,我们现在另外再起一个线程,来监控我们的Process,实时清空缓存就可以解决这个问题了。

    class WatchThread extends Thread   {   Process   p;   boolean   over;  ArrayList<String> stream;  public WatchThread(Process p) {   this.p = p;   over = false;  stream = new ArrayList<String>();  }   public void run() {   try {   if(p == null)return;   Scanner br = new Scanner(p.getInputStream());  while (true) {   if (p==null || over) break;   while(br.hasNextLine()){  String tempStream = br.nextLine();  if(tempStream.trim()==null||tempStream.trim().equals(""))continue;  stream.add(tempStream);  }  }   } catch(Exception   e){e.printStackTrace();}   }  public void setOver(boolean   over)   {   this.over   =   over;   }  public ArrayList<String> getStream() {  return stream;  }  }   

这样,即清空了inputStream,又不会造成需要的人无法获取inputStream的信息,waitFor()阻塞的问题也解决了。

 <span style="font-size:24px;"></span><pre name="code" class="java">在waitFor之前插入

WatchThread wt = new WatchThread(p); wt.start();
在waitFor后之后插入

  1. ArrayList<String> commandStream = wt.getStream();
  2. wt.setOver(true);

Process 的 waitFor() 造成的阻塞相关推荐

  1. Java Process中waitFor()的问题

    Java Process中waitFor()的问题 http://yearsaaaa123789.iteye.com/blog/1404865 在编写Java程序时,有时候我们需要调用其他的诸如exe ...

  2. java process的waitfor()阻塞问题

    http://blog.csdn.net/jimzhai/article/details/7864806 Runtime runtime = Runtime.getRuntime(); Process ...

  3. Process的waitFor死锁问题以及解决方案

    1.发现问题 在实际开发中,进行文件操作时,使用Process对文件进行解压操作,程序执行过程中会出现一直卡在那的问题. 2.原因查找 问题在缓冲区这个地方:可执行程序的标准输出比较多,而运行窗口的标 ...

  4. Process的waitFor死锁问题及解决办法

    一.问题再现 使用wkhtmltopdf插件做html转换pdf,打印条码标签. 打印两三张没问题,打印多了程序就出现这种卡死的情况,等很久程序也没有反应,也不报错,后台也没有程序输出.试了几次都是这 ...

  5. C#调用cmd出现Process线程假死或阻塞现象的官方解决方案

    引言:今天好郁闷啊,把手机给摔了,问了一下官网维修点,得花500大洋,我这是造的什么孽啊啊啊啊啊啊啊.............. 回到正题,之前C#调用cmd,读取GDAL输出的结果,一直好好的.直到 ...

  6. Java Process.waitFor() 阻塞卡住不返回

    1. 现象 在Java程序中,启动另一个进程执行一个命令时可以使用ProcessBuilder类启动一个进程. 以运行 ps 命令为例: ProcessBuilder processBuilder = ...

  7. 怎样判断子进程已经结束 process.waitFor();的问题

    怎样判断子进程已经结束 process.waitFor();的问题 2009年07月31日 14:38 来源:普索网 发表于:2007-02-28 10:25:04 楼主 ProcessBuild.c ...

  8. Java Process waitFor()方法与示例

    流程类的waitFor()方法 (Process Class waitFor() method) waitFor() method is available in java.lang package. ...

  9. java 使用Process调用exe程序 及 Process.waitFor() 死锁问题了解和解决

    前言 最近在开发android的同时也在开发java ,碰到了需要使用java 程序调用exe的需求,这里我使用的 process 来调用的.该篇文章 读完需要8+分钟,文章类型为 小白入门类型,此处 ...

最新文章

  1. 【协议分析】Wireshark 过滤表达式实例
  2. [ATF]-MTK:一篇文章了解ATF原理
  3. Web消息主体风格(Message Body Style)
  4. Linux下安装和配置solr/tomcat/IK分词器 详细实例二.
  5. java 能重写构成函数_java函数重载和函数重写
  6. X64-CL iPro 采集卡OC-64EO-IPRO0简介
  7. 计算机原理考研题库,2022考研853计算机专业基础综合《计算机组成原理》复习笔记及考研真题题库.pdf...
  8. 浅析bin,lib,src的区别
  9. SpringBoot 集成 Caffeine、Redis实现双重缓存方式(二)
  10. fiddler限速_fiddler限制网速
  11. L2TP/L2TP over IPSec
  12. python下载bt文件_使用libtorrent-python下载Torrent
  13. [转] 如何制作华为手机的刷机包
  14. hdu2825(状压dp+AC自动机)
  15. [线性代数]矩阵(mooc秦静老师讲解)
  16. 使用unity完成简单的打地鼠游戏2D制作
  17. 树形动态规划(树状DP)小结
  18. 常见负载均衡服务器介绍
  19. 机器自动翻译古文拼音 - 十大宋词 - 声声慢 寻寻觅觅 李清照
  20. 阿里云国际版设置DNS托管和智能分流教程详解

热门文章

  1. 92%的企业雇主预计今年将招应届MBA毕业生,相较过去几年招聘意向强烈 | 美通社头条...
  2. 地理信息系统(Geographic Information System,GIS)
  3. 再看《周渔的火车》 转载一篇不错的影评
  4. 采用外中断控制的条形LED彩灯设计
  5. 在RHEL7或CentOS7中修改创建账号时系统默认UID、GID最小起始值及其他设置
  6. 一组相关联的问题:“sudo: unable to resolve host ###: Connection timed out”、软件启动速度超慢、IPv6无法使用...
  7. SnapdragonCamera源码分析(一)CameraActivity
  8. C++中重定义,重载,重写
  9. 黄东升: 栈缓冲区溢出攻击实例
  10. DSPC-PEG-R8/M2pep/CAG/CKAAKN/DGEA/Oct/TOC 磷脂-聚乙二醇-多肽