【问题标题】:Use cases of PipedInputStream and PipedOutputStreamPipedInputStream 和 PipedOutputStream 的用例
【发布时间】:2010-08-03 10:40:16
【问题描述】:

管道流的用例是什么?为什么不将数据读入缓冲区然后将它们写出来?

【问题讨论】:

    标签: java io


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      如果您有两个长时间运行的线程并且一个设置为生成数据而另一个使用它,这很有用。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 这只是一个可怕的解决方案。这是 13 年前,所以我不记得细节,但我应该使用某种队列。事实上,我想我最终做到了。
        • @downvoter 请说出你的动机。我确实有过这种经历;随后我又学习了 16 年的 Java;而且我事先并不完全是新手。这是一个深思熟虑的判断。
        【解决方案4】:

        它们通常用于同时读取和写入,通常由两个不同的线程使用。

        (他们的设计很糟糕。你不能在一端切换线程,然后让该线程退出而不破坏管道。)

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            猜你喜欢
            • 2023-04-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-10-06
            • 2012-03-18
            • 2017-10-28
            • 1970-01-01
            • 2014-07-21
            相关资源
            最近更新 更多