PipedInputStream - Como evitar “java.io.IOException: Pipe broken”

Eu tenho dois tópicos. Um deles escreve para PipedOutputStream, outro lê do PipedInputStream correspondente. O pano de fundo é que um thread está baixando alguns dados do servidor remoto e multiplexa-o para vários outros threads através de fluxos canalizados.

O problema é que às vezes (especialmente ao baixar grandes(> 50Mb) arquivos) eu recebojava.io.IOException: cano quebrado ao tentar ler de PipedInputStream.
Javadoc diz queA pipe is said to be broken if a thread that was providing data bytes to the connected piped output stream is no longer alive.
É verdade, meu texto de escrita realmente morre depois de escrever todos os seus dados para PipedOutputStream.

Alguma solução? Como posso evitar que o PipedInputStream ative essa exceção? Eu quero ser capaz de ler todos os dados que foram gravados para PipedOutputStream, mesmo se o segmento de gravação terminar seu trabalho. (Se alguém souber como continuar escrevendo o tópico até que todos os dados sejam lidos, esta solução também é aceitável.).

questionAnswers(3)

yourAnswerToTheQuestion