flujo de la tubería
En el lenguaje Java proporciona una variedad de flujo de entrada / salida de corriente, nos permite manipular fácilmente los datos, que es una corriente de flujo de tubería especial, para la transferencia de datos directamente entre los diferentes hilos. Un hilo envío de datos al flujo de la tubería de salida, otro hilo para leer datos desde el conducto de flujo de entrada.
Mediante el uso de tubos para la comunicación entre los diferentes hilos, sin tener que recurrir a cosas como los archivos temporales similares.
flujo de bytes
PipedInputStream suma PipedOutputStream
flujo de caracteres
PipedReader 和 PipedWriter
Ejemplo:
público de clase PipeStreamTest { públicas estáticas void main (String [] args) lanza IOException, InterruptedException { WriteData WriteData = nuevo WriteData (); ReadData ReadData = nuevo ReadData (); Lector PipedReader = nuevo PipedReader (); PipedWriter escritor = nuevo PipedWriter (); writer.connect (lector); nueva rosca (() -> { writeData.writeMethod (escritor); }).comienzo(); Thread.sleep ( 2000 ); nueva rosca (() -> { readData.readMethod (lector); }).comienzo(); } estática clase WriteData { público vacío writeMethod (escritor PipedWriter) { try { System.out.println ( "escritura:" ); para ( int i = 0; i <300; i ++ ) { Cadena OutData = "" + (i + 1 ); writer.write (OutData); System.out.print (OutData); } System.out.println (); writer.close (); } Catch (IOException e) { e.printStackTrace (); } } } estática clase ReadData { público vacío ReadMethod (lector de PipedReader) { tratar { System.out.println ( "leer" ); Char [] bytearray = nuevo Char [20 ]; int readLength = reader.read (bytearray); mientras que (readLength! = -1 ) { Cadena newData = nuevo String (bytearray, 0 , readLength); System.out.print (newData); readLength = reader.read (bytearray); } System.out.println (); reader.Close (); } Catch (IOException e) { e.printStackTrace (); } } } }
Los resultados son los siguientes: