如何将流从一个线程传递到另一个线程?可能我应该这样做不同吗?

时间:2013-03-08 10:35:23

标签: java multithreading stream outputstream processbuilder

我有ProcessBuilder的包装器,因此任何需要运行进程的类都可以使用它 该类传递过程和参数,并返回结果 结果将是Process的输出流或我猜的错误流。
我的问题是如何在线程之间传递流?我的意思是我正在做类似以下的事情:

String line=null;  
try {  
    while ( (line = br.readLine()) != null) {  
            if (pw != null)  
                    pw.println(line);                   
        }
} catch (IOException e) {             
    e.printStackTrace();  
}
if (pw != null)  
       pw.flush();  

我想我应该flush但不要关闭蒸汽吧?或者我应该采用不同的方式吗?

1 个答案:

答案 0 :(得分:2)

您可以将数据写入ByteArrayOutputStream并将其传递给调用者。完成写入BAOS后,关闭输入流并将输出流传递给调用者。呼叫者有责任关闭/冲洗BAOS并释放与其相关的任何内存。