多线程之字符流管道通信

多线程之字符流管道通信在Java语言中提供了各种各样的输入输出流Stream,使我们能够很方便的对数据进行操作。其中的管道

欢迎大家来到IT世界,在知识的湖畔探索吧!

在Java语言中提供了各种各样的输入输出流Stream,使我们能够很方便的对数据进行操作,其中的管道流(PipeStream)是一种特殊的流,用于在不同线程之间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读取数据。通过使用管道,实现不同线程之间的通信,而无须借助于类似临时文件之类的东西。

在Java的JDK中提供了四个类来使线程间可以进行通信:

  1. PipedInputStream和PipedOutputStream

  2. PipedReader和PipedWrite

下面看下第一种方法的测试代码

多线程之字符流管道通信

写数据类

这个类给发送数据到输出管道

多线程之字符流管道通信

读数据类

这个类从输出管道中读数据。

多线程之字符流管道通信

写线程

这个线程调用写数据的类,给管道写入信息。

多线程之字符流管道通信

读线程

这个线程调用读数据的类,从管道中读取数据并在控制台显示。

多线程之字符流管道通信

测试类

这里使用inputStream.connect(outputStream)或outputStream.connect(inputStream)的作用使两个Stream之间产生通信链接,这样才可以将数据进行输出与输入。

从结果可以看到,两个线程通过管道流成功进行了数据的传输。

首先是读线程的启动, 由于没有数据被写入,所以线程会被阻塞在int readLength = input.read(byteArray);代码中,直到有数据被写入,才会继续往下执行。

喜欢的关注一波~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/22163.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信