- 管道輸入/輸出流可以用于線程之間的數(shù)據(jù)傳輸,傳輸媒介為內(nèi)存
- 有四種實(shí)現(xiàn):PipedOutputStream,PipedInputStream,PipedReader和PipedWriter,前兩種面向字節(jié),后兩種面向字符
代碼示例:
import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;
/**
* @author pengjunzhe
*/
public class Piped {
public static void main(String[] args) throws IOException {
PipedWriter out = new PipedWriter();
PipedReader in = new PipedReader();
// 將輸入流和輸出流連接
out.connect(in);
Thread printThread = new Thread(new Print(in), "PrintThread");
printThread.start();
int receive = 0;
try {
while ((receive = System.in.read()) != -1) {
out.write(receive);
}
} finally {
out.close();
}
}
static class Print implements Runnable {
private PipedReader in;
public Print(PipedReader in) {
this.in = in;
}
@Override
public void run() {
int receive = 0;
try {
while ((receive = in.read()) != -1) {
System.out.print((char) receive);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
運(yùn)行結(jié)果:
111
111
- 對于Piped類型的流,需要先進(jìn)行板頂,也就是調(diào)用connect()方法,不然對流的訪問會(huì)拋出異常。