Piped流的用例是什么?为什么不将数据读入缓冲区然后将其写出来?
答案 0 :(得分:3)
Java IO中的管道提供了在同一JVM中运行的两个线程进行通信的能力。因为这样的管道是数据的共同来源或目的地。
如果你有两个长时间运行的线程,一个用于生成数据而另一个用于生成数据,这很有用。
答案 1 :(得分:3)
BlockingQueue或类似的集合可以为您提供更好的服务,这是线程安全,健壮且可以更好地扩展。
答案 2 :(得分:2)
它们通常用于同时读写,通常由两个不同的线程组成。
(他们的设计非常糟糕。你不能在一端切换线程,然后在不中断管道的情况下退出该线程。)
答案 3 :(得分:2)
正如其他答案所说,它们是专为在线程之间使用而设计的。在实践中,最好避免使用它们。我已经在13年内使用过它们了一次,我希望我没有。
答案 4 :(得分:1)
使用Piped流的一个优点是它们在我们的代码中提供流功能,而不会迫使我们构建新的专用流。
例如我们可以使用管道为我们的应用程序创建简单日志记录工具。我们可以通过普通Printwritter向日志工具发送消息,然后它可以执行任何处理或缓冲,然后再将消息发送到最终目的地。 / p>