【问题标题】:Make sure PipedOutputStream blocks (flush?)确保 PipedOutputStream 块(刷新?)
【发布时间】:2014-09-19 02:25:03
【问题描述】:

我在 Java 中使用 PipedOutputStreamPipedInputStream

一个线程正在生成字节并写入它们;另一个正在消耗它们。

我想确保生成字节的速度不会明显快于消耗它们的速度。

PipedOutputStream 何时阻塞?它的缓冲区有固定大小吗?

或者我每次write()之后都需要打电话给flush()吗?

【问题讨论】:

  • This answer 似乎主要回答了这个问题。不过,这并不是真正的骗局。
  • @BoristheSpider,这似乎回答了它。
  • @BoristheSpider,我读到了,虽然我没有意识到PipedInputStream 的缓冲区也被PipedOutputStream 共享。 (有道理,事后看来。)

标签: java multithreading inputstream outputstream


【解决方案1】:

这就是它的行为方式。管道共享一个相当小的缓冲区,根据下面的 cmets,如果它填满了写入器块,则为 1k。

【讨论】:

  • 在我看来像 1k。不确定这是否是正确的常数。
  • @BoristheSpider,我同意。
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-15
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多