package com.io.file;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class PipedInput_Output_Stream {
public static void main(String[] args) {
PipedInputStream pis=new PipedInputStream();
PipedOutputStream pos=new PipedOutputStream();
try {
pis.connect(pos);//使输入流与输出流连接上
} catch (IOException e) {
e.printStackTrace();
}
//下面是调用两个线程
Read r=new Read(pis);
Write w=new Write(pos);
Thread t1=new Thread(r);
Thread t2=new Thread(w);
t1.start();
t2.start();
}
}
class Read implements Runnable{
private PipedInputStream pis;
public Read(PipedInputStream pis){
this.pis=pis;
}
public void run(){
int num=0;
byte[]b=new byte[1024];
try {
num=pis.read(b);//走到这里是,如果没有数据,则会产生线程阻塞,让给其他线程执行
System.out.println(new String(b,0,num));
pis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Write implements Runnable{
private PipedOutputStream pos;
public Write(PipedOutputStream pos){
this.pos=pos;
}
public void run(){
try {
pos.write("aafdafdsa".getBytes());
pos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}