Java 通过管道进行线程间通信:字节流/字符流

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41723615/article/details/88756597

管道流:用于不同线程间传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。
通过使用管道,实现不同线程间的通信,而无须借助类似临时文件之类的东西。
在Java的JDK中提供了4个类来使线程间可以进行通信:
PipedInputStream 和 PipedOutPutStream
PipedReader 和 PipedWriter

示例:字节流
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输出结果:
在这里插入图片描述

两个线程通过管道成功进行数据的传输。由于当时没有数据被写入,所以线程阻塞在int readLength = int.read(byteArray);中,直到有数据被写入,才能继续执行。

示例:字符流:

在管道传递字符流,修改原先的代码,将
PipedInputStream 改为 PipedReader
PipedOutPutStream 改为 PipedWriter
输出结果:
在这里插入图片描述
打印结果和之前一样。

猜你喜欢

转载自blog.csdn.net/qq_41723615/article/details/88756597