PipedInputStream和PipedOutputStream的使用案例

时间:2010-08-03 10:40:16

标签: java io

Piped流的用例是什么?为什么不将数据读入缓冲区然后将其写出来?

5 个答案:

答案 0 :(得分:3)

Java IO中的管道提供了在同一JVM中运行的两个线程进行通信的能力。因为这样的管道是数据的共同来源或目的地。

如果你有两个长时间运行的线程,一个用于生成数据而另一个用于生成数据,这很有用。

答案 1 :(得分:3)

BlockingQueue或类似的集合可以为您提供更好的服务,这是线程安全,健壮且可以更好地扩展。

答案 2 :(得分:2)

它们通常用于同时读写,通常由两个不同的线程组成。

(他们的设计非常糟糕。你不能在一端切换线程,然后在不中断管道的情况下退出该线程。)

答案 3 :(得分:2)

正如其他答案所说,它们是专为在线程之间使用而设计的。在实践中,最好避免使用它们。我已经在13年内使用过它们了一次,我希望我没有。

答案 4 :(得分:1)

使用Piped流的一个优点是它们在我们的代码中提供流功能,而不会迫使我们构建新的专用流。

例如我们可以使用管道为我们的应用程序创建简单日志记录工具。我们可以通过普通Printwritter向日志工具发送消息,然后它可以执行任何处理或缓冲,然后再将消息发送到最终目的地。 / p>

更多详情请参阅:http://docstore.mik.ua/orelly/java/exp/ch08_01.htm