※ 目的地
注意:管道是单向的,
1.构建读写的管道
2.把读写管道连接
3.把读和写的管道分别传给不同的线程
操作的目的地线程,线程之间通信用的
※ PipedReader 从管道中取内容
package com.briup.IO;
import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;
public class PipedReaderWriterTest {
public static void main(String[] args) {
PipedWriter pw=new PipedWriter();
try {
PipedReader pr=new PipedReader(pw);
Thread t1=new ReadPiped("读:", pr);
Thread t2=new WriterPiped("写:", pw);
t1.start();
t2.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//读取的管道
class ReadPiped extends Thread{
private PipedReader pr;
public ReadPiped(String name,PipedReader pr) {
super(name);
this.pr=pr;
}
@Override
public void run() {
while(true){
try {
int data=pr.read();
if(data==38){
break;
}
System.out.println(getName()+":"+data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//写出消息的管道
class WriterPiped extends Thread{
private PipedWriter pw;
public WriterPiped(String name,PipedWriter pw) {
super(name);
this.pw=pw;
}
@Override
public void run() {
char[] c="中hellowolrd&".toCharArray();
for(char cc:c){
try {
pw.write(cc);
System.out.println(getName()+":"+cc);
pw.flush();
Thread.sleep(1000);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}