Procesamiento simultáneo de InputStream único con consumidores independientes

Necesito generar N hilos para el consumidor, que procesan el mismo InputStream simultáneamente, por ejemplo, transformarlo de alguna manera, calcular la suma de comprobación o la firma digital, etc. Estos consumidores no dependen unos de otros y todos ellos utilizan bibliotecas de terceros, que aceptan InputStream como fuente de datos.

Entonces, lo que puedo hacer es crear una implementación de InputStream, que

leer parte de los datos del flujo "padre"desbloquear consumidoresEspera hasta que todos los consumidores lean todo el fragmento.lee la siguiente parte

Si bien parece simple, puede surgir varios problemas, como el bloqueo vital cuando ciertos consumidores fallecen, implementar todos los métodos de InputStream, controlar el enlace de los consumidores utilizando barreras / cierres, etc.

Un amigo me dijo que la implementación de la mitad de una hora era mi tarde.

Preferiría usar algo suficientemente maduro (Google no obtuvo resultados, por lo tanto, ¿mi google-fu no es lo suficientemente bueno?) O no molestarme y copiar todo el flujo de "fuente" en un archivo temporal y usarlo como fuente de datos. La última solución parece ser más confiable, pero puede terminar en la creación de archivos de gigabytes (cuando se procesa transmisión de audio, por ejemplo).

Respuestas a la pregunta(3)

Su respuesta a la pregunta