Java管道流实现线程间通信过程的示例分析
导读:本文共1427字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 管道流在Java语言中提供了各种各样的输入/输出流 Stream ,使我们能够很方便地对数据进行操作,其中管道流是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道流,另一个线程从输入管道流中读取数据。通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西。字节流PipedInputStream 和 PipedOutputSt... ...
目录
(为您整理了一些要点),点击可以直达。管道流
在Java语言中提供了各种各样的输入/输出流 Stream ,使我们能够很方便地对数据进行操作,其中管道流是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道流,另一个线程从输入管道流中读取数据。
通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西。
字节流
PipedInputStream 和 PipedOutputStream
字符流
PipedReader 和 PipedWriter
示例
publicclassPipeStreamTest{publicstaticvoidmain(String[]args)throwsIOException,InterruptedException{WriteDatawriteData=newWriteData();ReadDatareadData=newReadData();PipedReaderreader=newPipedReader();PipedWriterwriter=newPipedWriter();writer.connect(reader);newThread(()->{writeData.writeMethod(writer);}).start();Thread.sleep(2000);newThread(()->{readData.readMethod(reader);}).start();}staticclassWriteData{publicvoidwriteMethod(PipedWriterwriter){try{System.out.println("write:");for(inti=0;i<300;i++){StringoutData=""+(i+1);writer.write(outData);System.out.print(outData);}System.out.println();writer.close();}catch(IOExceptione){e.printStackTrace();}}}staticclassReadData{publicvoidreadMethod(PipedReaderreader){try{System.out.println("read:");char[]byteArray=newchar[20];intreadLength=reader.read(byteArray);while(readLength!=-1){StringnewData=newString(byteArray,0,readLength);System.out.print(newData);readLength=reader.read(byteArray);}System.out.println();reader.close();}catch(IOExceptione){e.printStackTrace();}}}}
运行结果如下:
Java的优点是什么
1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
Java管道流实现线程间通信过程的示例分析的详细内容,希望对您有所帮助,信息来源于网络。