He visto dos respuestas en SO que afirman que las clases PipedInputStream
y PipedOutputStream
provistas por Java son defectuosas. Pero no dieron más detalles sobre lo que estaba mal con ellos. ¿Son realmente defectuosos, y si es así de qué manera? Actualmente estoy escribiendo un código que los usa, por lo que me gustaría saber si estoy tomando un giro equivocado.Defectos con PipedInputStream/PipedOutputStream
One answer dijo:
PipedInputStream
yPipedOutputStream
están rotos (con respecto a enhebrar). Suponen que cada instancia está vinculada a un hilo en particular. Esto es extraño
Para mí eso no parece ni bizarro ni roto. Quizás el autor también tenía algunos otros defectos en mente?
Another answer dijo:
En la práctica, es mejor evitarlos. Los he usado una vez en 13 años y desearía no haberlo hecho.
Pero ese autor no pudo recordar cuál era el problema.
Al igual que con todas las clases, y especialmente a las clases utilizadas en varios subprocesos, que tendrán problemas si se les hace mal uso. Por lo tanto, no considero el impredecible "write end dead" IOException
que PipedInputStream
puede arrojar como un defecto (a falta de close()
el PipedOutputStream
conectado es un error; consulte el artículo Whats this? IOException: Write end dead, de Daniel Ferbers, para obtener más información). ¿Qué otros defectos reclamados hay?
Este http://stackoverflow.com/questions/484119/why-doesnt-more-java-code-use-pipedinputstream-pipedoutputstream tipo de lo cubre. En realidad no son "defectuosos", son un poco engañosos y generalmente tienen un olor a código de señal, si estás 100% seguro de que los necesitas y de que no hay ningún error en el diseño, no hay un problema real con su uso ... – TC1
Una mirada rápida ya que quería usar una. Está al menos "Subrayado" ya que el hilo de lectura realmente no espera que el hilo de escritura escriba la solicitud de lectura completa, y aborta con excepción de EOF si el escritor lo cierra, etc. Tiene un manejo y sincronización de hilos muy primitivos, y requiere que el buffer sea tan grande como la solicitud de lectura más grande. – peterk