【发布时间】:2010-08-03 10:40:16
【问题描述】:
管道流的用例是什么?为什么不将数据读入缓冲区然后将它们写出来?
【问题讨论】:
管道流的用例是什么?为什么不将数据读入缓冲区然后将它们写出来?
【问题讨论】:
BlockingQueue 或类似的集合可能会为您提供更好的服务,它们是线程安全的、健壮的并且可以更好地扩展。
【讨论】:
Java IO 中的管道为在同一个 JVM 中运行的两个线程提供了通信能力。因此,管道是数据的常见来源或目的地。
如果您有两个长时间运行的线程并且一个设置为生成数据而另一个使用它,这很有用。
【讨论】:
正如其他答案所说,它们是为在线程之间使用而设计的。在实践中,最好避免使用它们。我在 13 年中使用过一次,但我希望我没有。
【讨论】:
它们通常用于同时读取和写入,通常由两个不同的线程使用。
(他们的设计很糟糕。你不能在一端切换线程,然后让该线程退出而不破坏管道。)
【讨论】:
使用管道流的一个优点是它们在我们的代码中提供了流功能,而不会迫使我们构建新的专用流。
例如我们可以使用管道为我们的应用程序创建简单的日志记录工具。我们可以通过普通的 Printwritter 将消息发送到日志记录工具,然后它可以在将消息发送到最终目的地之前执行所需的任何处理或缓冲。
【讨论】: