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