Process的的waitFor()造成的阻塞
来源:互联网 发布:网络信息安全龙头股 编辑:程序博客网 时间:2024/04/27 23:06
我们在调用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; }}
然后在waitFor之前插入
WatchThread wt = new WatchThread(p2);wt.start();
在waitFor之后插入
ArrayList<String> commandStream = wt.getStream();wt.setOver(true);
这样,即清空了inputStream,又不会造成需要的人无法获取inputStream的信息,waitFor()阻塞的问题也解决了
0 0
- Process的的waitFor()造成的阻塞
- Process的的waitFor()造成的阻塞
- Process 的 waitFor() 造成的阻塞
- 深入研究java.lang.Process类&Process的的waitFor()造成的阻塞
- java process的waitfor()阻塞问题
- process.waitFor()的问题
- java process的waitfor()
- java Process的waitFor()
- Java Process 的 waitFor()
- java Process的waitFor()
- java Process的waitFor()
- Java中Process和Runtime()使用,以及调用cmd命令阻塞在process.waitfor( )的问题解决
- Java中Process和Runtime()使用,以及调用cmd命令阻塞在process.waitfor( )的问题解决
- Java Process中waitFor()的问题
- Java Process中waitFor()的问题
- Java Process中waitFor()的问题
- Process.waitFor()的返回值含义
- Java Process中waitFor()的问题
- 深入理解ningx, hello world模块代码
- Mysql5.7主从
- eclipse 利用windows资源管理器打开当前文件所在目录 | eclipse下的Java工程路径问题
- 黑马程序员 运算符的使用
- bootstrap源码分析系列:二,栅格和响应式布局
- Process的的waitFor()造成的阻塞
- gdb调试常用指令
- 工具接口标准(TIS)可执行链接格式(ELF)规范-卷I-介绍
- eclipse导入导出项目
- 2013.1月份工作日记
- 跨语言通信框架Apache Thrift在PHP中的使用
- 解决JS中乘法的浮点错误的方法
- RUP和设计模式
- 《Linux 性能及调优指南》3.2 CPU瓶颈