У меня есть два потока. Один из них пишет в PipedOutputStream, другой - из соответствующего PipedInputStream. Предпосылкой является то, что один поток загружает некоторые данные с удаленного сервера и мультиплексирует его на несколько других потоков через потоки с каналами.
Проблема в том, что иногда (особенно при загрузке больших файлов ( > 50 МБ) я получаю java.io.IOException: Pipe broken при попытке прочитать из PipedInputStream.
Джавадок говорит, что A pipe is said to be broken if a thread that was providing data bytes to the connected piped output stream is no longer alive.
Это правда, мой поток писем действительно умирает после написания всех его данных в PipedOutputStream.
Любые решения? Как я могу запретить PipedInputStream отбрасывать это исключение? Я хочу иметь возможность читать все данные, которые были написаны в PipedOutputStream, даже если запись потока завершила его работу. (Если кто-нибудь знает, как продолжать писать нить, пока все данные не будут прочитаны, это решение также приемлемо).