管道流
在Java语言中提供了各种各样的输入/输出流Stream,使我们能够很方便的对数据进行操作,其中管道流(pipeStream)是一种特殊的流,用于不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西。
在Java的JDK中提供了4个类来使线程间可以进行通信:
1) PipedInputStream和PipedOutputStream(字节流)
2) PipedReader和PipedWriter(字符流)
管道字节流
//类WriteData.java:
package test;
import java.io.IOException;
import java.io.PipedOutputStream;
public class WriteData {
public void writeMethod(PipedOutputStream out) {
try {
System.out.println("write :");
for(int i = 0; i < 300; i++) {
String outData = "" + (i + 1);
out.write(outData.getBytes());//将一个字符转化为字节,然后写入管道
System.out.print(outData);
Thread.sleep(1000);//加上这句,可以看到管道是边写边读的
}
System.out.println();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//类ReadData.java:
package test;
import java.io.IOException;
import java.io.PipedInputStream;
public class ReadData {
public void readMethod(PipedInputStream input) {
System.out.println("read :");