La forma más eficiente de crear InputStream desde OutputStream

Esta página:http://blog.ostermiller.org/convert-java-outputstream-inputstream describe cómo crear un InputStream desde OutputStream:

new ByteArrayInputStream(out.toByteArray())

Otras alternativas son usar PipedStreams y nuevos subprocesos, lo cual es incómodo.

No me gusta la idea de copiar muchos megabytes a una nueva matriz de bytes de memoria. ¿Hay una biblioteca que hace esto de manera más eficiente?

EDITAR:

Por consejo de Laurence Gonsalves, probé PipedStreams y resultó que no son tan difíciles de tratar. Aquí está el código de ejemplo en clojure:

(defn #^PipedInputStream create-pdf-stream [pdf-info]
  (let [in-stream (new PipedInputStream)
        out-stream (PipedOutputStream. in-stream)]
    (.start (Thread. #(;Here you write into out-stream)))
    in-stream))

Respuestas a la pregunta(4)

Su respuesta a la pregunta