PipedInputStream/PipedOutputStream存在缺陷

Rae*_*ald 8 java io multithreading

我已经看到了两个关于SO的答案,声称Java提供的PipedInputStreamPipedOutputStream类是有缺陷的.但他们没有详细说明他们的错误.他们真的有缺陷,如果是这样的话?我正在编写一些使用它们的代码,所以我想知道我是否采取了错误的转向.

一个答案说:

PipedInputStream并且PipedOutputStream被打破(关于穿线).他们假设每个实例都绑定到一个特定的线程.这很奇怪.

对我来说,这似乎既不奇怪也不破碎.也许作者也有其他一些缺陷?

另一个答案说:

在实践中,最好避免使用它们.我已经用了13年一次,我希望自己没有.

但是那位作者无法回想起问题所在.


与所有类一样,尤其是在多个线程中使用的类,如果您滥用它们,则会遇到问题.所以我不考虑不可预知的"写入结束死"IOExceptionPipedInputStream可以抛出是一大败笔(无法close()连接的PipedOutputStream是一个错误,请参阅文章请告诉我这IOException异常:写入结束死了吗?,由丹尼尔·Ferbers,以获取更多信息).有什么其他声称的缺陷?

Rae*_*ald 10

它们没有缺陷.

与所有类一样,尤其是在多个线程中使用的类,如果您滥用它们,则会遇到问题.不可预知的"写入结束死" IOExceptionPipedInputStream可以抛出不是一个缺陷(无法close()连接的PipedOutputStream是一个错误,请参阅文章请告诉我这IOException异常:写入结束死了吗?,由丹尼尔·Ferbers,以获取更多信息).