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