📅  最后修改于: 2023-12-03 15:01:35.019000             🧑  作者: Mango
Java.io.PipedReader是Java中输入流的一个类,它用于将字符数据从管道输出流读入。
PipedReader类的构造函数可用于创建一个新的PipedReader对象,其语法如下:
public PipedReader(PipedWriter out) throws IOException
该构造函数将管道输出流作为参数,并实例化PipedReader对象,以便从输出流读取字符。
以下是PipedReader类的一些常用方法:
read()
:从流中读取单个字符。该方法将阻塞直到有数据可以读取。
read(char[] cbuf, int offset, int length)
:从流中读取最多length个字符,并将它们存储在数组cbuf的offset处开始。
ready()
:检查此流是否已准备好被读取。
close()
:关闭该流并释放与之关联的所有系统资源。
以下是使用PipedReader和PipedWriter将数据从一个线程传递到另一个线程的示例代码:
import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;
public class PipeExample {
public static void main(String[] args) {
try {
final PipedReader reader = new PipedReader();
final PipedWriter writer = new PipedWriter();
writer.connect(reader);
Thread writerThread = new Thread(new Runnable() {
@Override
public void run() {
try {
writer.write("Hello, world!");
writer.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
Thread readerThread = new Thread(new Runnable() {
@Override
public void run() {
try {
int data = reader.read();
while (data != -1) {
System.out.print((char) data);
data = reader.read();
}
reader.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
writerThread.start();
readerThread.start();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
运行此代码后,将输出字符串“Hello, world!”。
Java.io.PipedReader类是一个有用的字符输入流类,用于从管道输出流中读取字符数据。它具有很多实用方法,使得从流中读取数据变得比较容易。在多线程编程中,PipedReader和PipedWriter可以方便地实现数据的共享和传递。