小编Ban*_*ana的帖子

Java process.getInputStream()没什么可读的,死锁是孩子

我遇到了一些进程包装的问题,它只发生在Windows XP中.这段代码在Windows 7中完美运行.我真的很难过为什么XP中的流是空的.我也尝试使用Process.Exec()的String []版本,它没有任何区别.

我使用以下类从进程'STDOUT和STDERR(每个流的一个实例)中读取:


import java.util.*;
import java.io.*;

public class ThreadedStreamReader extends Thread{
 InputStream in;
 Queue messageQueue;

 public ThreadedStreamReader(InputStream s, Queue q)
 {
  in = s;
  messageQueue = q;
 }

 public void run()
 {
  try
  {
   BufferedReader r = new BufferedReader(new InputStreamReader(in));
   String line = null;
   while((line = r.readLine()) != null)
   {
    synchronized(messageQueue)
    {
     messageQueue.add(line);
    }
   }

  }catch(Exception e)
  {
   System.err.println("Bad things happened while reading from a stream");
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

我在这里使用它:


Process p = Runtime.getRuntime().exec("test.exe");
Queue<String> q = …
Run Code Online (Sandbox Code Playgroud)

java deadlock inputstream process

9
推荐指数
1
解决办法
4121
查看次数

标签 统计

deadlock ×1

inputstream ×1

java ×1

process ×1