パイプラインの流れ
Java言語では、入力/出力ストリームストリームの多様を提供し、私たちは簡単に別のスレッドとの間で直接データを転送するために、特別なパイプラインの流れでデータを操作することを可能にします。出力パイプ・フローにデータを送信するスレッドが、別のスレッドは、入力ストリーム導管からデータを読み出します。
同様の一時ファイルのようなものに頼ることなく、異なるスレッド間の通信のためのパイプを使用することにより。
バイトストリーム
PipedInputStream 和 PipedOutputStream
文字ストリーム
PipedReader和PipedWriter
例:
パブリック クラスPipeStreamTest { 公共 静的 ボイドメイン(文字列[]引数)がスローにIOException、InterruptedExceptionある{ 書き込みデータ書き込みデータ = 新しい書き込みデータを(); READDATAて、readData = 新しいREADDATA(); PipedReaderリーダー = 新しいPipedReader()。 PipedWriterライター = 新しいPipedWriter(); writer.connect(リーダー)。 新しいスレッド(() - > { writeData.writeMethod(ライター); }))(開始。 Thread.sleep(2000年); 新しいスレッド(() - > { readData.readMethod(リーダ); }))(開始。 } 静的 クラスWRITEDATA { 公共 空writeMethod(PipedWriterライター){ 試み{ System.out.printlnは( "書き込み:" ); 以下のために(INT I 0 =; I <300; I ++ ){ 文字列OUTDATA = "" +(I + 1 )。 writer.write(OUTDATA)。 System.out.print(OUTDATA)。 } System.out.println(); writer.close(); } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } } 静的 クラスREADDATA { 公共 ボイドreadMethod(PipedReaderリーダ){ 試み{ するSystem.out.println( "読み出し" )。 CHAR [] BYTEARRAY = 新しい CHAR [20 ]。 INT readLength = reader.read(BYTEARRAY)。 同時に(readLength!= -1 ){ ストリングあるnewDataは = 新しい文字列(BYTEARRAY、0 、readLength)。 System.out.print(あるnewData)。 readLength = reader.read(BYTEARRAY)。 } のSystem.out.println(); )(reader.close。 } キャッチ(IOExceptionを電子){ e.printStackTrace(); } } } }
結果は以下の通りであります: