Недостатки PipedInputStream / PipedOutputStream

Я видел два ответа на SO, в которых утверждается, что классы PipedInputStream и PipedOutputStream , предоставляемые Java, являются ошибочными. Но они не уточнили, что с ними не так. Действительно ли они ошибочны, и если да, то каким образом? В настоящее время я пишу код, который их использует, поэтому я хотел бы знать, не ошибаюсь ли я.

В одном из ответов говорилось:

PipedInputStream и PipedOutputStream не работают (в отношении потоковой передачи). Они предполагают, что каждый экземпляр привязан к определенному потоку. Это странно.

Мне это не кажется ни странным, ни ломким. Возможно, автор имел в виду и другие недостатки?

Другой ответ гласил:

На практике их лучше избегать. Я использовал их один раз за 13 лет, и мне жаль, что нет.

Но этот автор не мог вспомнить, в чем была проблема.


Как и в случае со всеми классами, особенно с классами, используемыми в нескольких потоках, у вас возникнут проблемы, если вы будете их неправильно использовать. Так что я не считаю непредсказуемое "write end dead" IOException , которое PipedInputStream может бросить, как недостаток (неспособность close () подключенного PipedOutputStream - это ошибка; дополнительную информацию см. В статье Что это? IOException: запись end dead ». Какие еще заявленные недостатки есть?

8
задан Community 23 May 2017 в 12:16
поделиться