java - 如何将流从一个线程传递到另一个线程?也许我应该采取不同的做法?

标签 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();  

我想我应该冲洗但不关闭 Steam ,对吗?或者我应该采取不同的做法?

最佳答案

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

关于java - 如何将流从一个线程传递到另一个线程?也许我应该采取不同的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291980/

相关文章:

java - 如何在textview中设置文本并将其格式化为代码? (Android Java)

java - ArrayList 最后一个索引

java - 如何测试是否使用 javascript 加载了 java applet?

c++ - 如何在单独的线程中调用方法并使用返回状态

java - 将对象引用存储到 volatile 字段中

ios - AVPlayer试图在HLS音频流中找到错误的位置

java - 如何在 JavaFX 中打开新窗口时执行代码?

c - 没有全局变量的 pthreads 互斥锁,只返回 thread_struct 中的数组

stream - 检测 TCP 流中的某个字符串(命令)

C++ 流不读取空行