public classWriteData {public voidwriteMethod(PipedWriter out){try{
System.out.println("write:");for (int i = 0; i < 100; i++) {
String data=""+i;
out.write(data);
System.out.print(data);
}
System.out.println();
out.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}public classReadData {public voidreadMethod(PipedReader in){try{
System.out.println("read:");char[] byteArray = new char[20];int readLength=in.read(byteArray);while (readLength!=-1){
String newData= new String(byteArray, 0, readLength);
System.out.print(newData);
readLength=in.read(byteArray);
}
System.out.println();
in.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}public class ThreadWrite extendsThread {privateWriteData write;privatePipedWriter out;publicThreadWrite(WriteData write, PipedWriter out) {this.write =write;this.out =out;
}
@Overridepublic voidrun() {
write.writeMethod(out);
}
}public class ThreadRead extendsThread{privateReadData read;privatePipedReader in;publicThreadRead(ReadData read, PipedReader in) {this.read =read;this.in =in;
}
@Overridepublic voidrun() {
read.readMethod(in);
}
}public classRun {public static voidmain(String[] args) {try{
WriteData writeData= newWriteData();
ReadData readData= newReadData();
PipedWriter pipedWriter= newPipedWriter();
PipedReader pipedReader= newPipedReader();//通过这一行使得输入流和输出流联系起来
pipedReader.connect(pipedWriter);
ThreadWrite threadWrite= newThreadWrite(writeData, pipedWriter);
threadWrite.start();
Thread.sleep(2000);
ThreadRead threadRead= newThreadRead(readData, pipedReader);
threadRead.start();
}catch(IOException e) {
e.printStackTrace();
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}