核心:
PipedInputStream
PipedOutputStream
PipedReader
PipedWriter
通过下面的方式进行管道连接.读取数据
PipedInputStream.connet(PipedOutputStream)
package com.hgh.java_duoxiancheng.ch3_1.p12;
import java.io.PipedOutputStream;
public class WriteData {
public void write(PipedOutputStream pipedOutputStream){
try {
System.out.println("write:");
for(int i = 0 ; i< 300 ; i ++){
String outData = "" + (i + 1);
pipedOutputStream.write(outData.getBytes());
System.out.println(outData);
}
System.out.println();
pipedOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.hgh.java_duoxiancheng.ch3_1.p12;
import java.io.IOException;
import java.io.PipedInputStream;
public class ReadData {
public void read(PipedInputStream pipedInputStream){
try {
System.out.println("read start");
byte[] data = new byte[20];
int len = -1;
while((len = pipedInputStream.read(data)) != -1){
String str = new String(data, 0, len);
System.out.println(str);
}
pipedInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.hgh.java_duoxiancheng.ch3_1.p12;
import java.io.PipedOutputStream;
public class ThreadWrite extends Thread{
private WriteData writeData;
private PipedOutputStream pipedOutputStream;
ThreadWrite(WriteData writeData,PipedOutputStream pipedOutputStream){
this.writeData = writeData;
this.pipedOutputStream = pipedOutputStream;
}
@Override
public void run() {
writeData.write(pipedOutputStream);
}
}
package com.hgh.java_duoxiancheng.ch3_1.p12;
import java.io.PipedInputStream;
public class ThreadRead extends Thread{
private ReadData readData;
private PipedInputStream pipedInputStream;
ThreadRead(ReadData readData,PipedInputStream pipedInputStream){
this.readData = readData;
this.pipedInputStream = pipedInputStream;
}
@Override
public void run() {
readData.read(pipedInputStream);
}
}
package com.hgh.java_duoxiancheng.ch3_1.p12;
import java.io.IOException;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class Run {
public static void main(String[] args) {
ReadData readData = new ReadData();
WriteData writeData = new WriteData();
PipedInputStream pipedInputStream = new PipedInputStream();
PipedOutputStream pipedOutputStream = new PipedOutputStream();
try {
pipedInputStream.connect(pipedOutputStream);
ThreadRead threadRead = new ThreadRead(readData, pipedInputStream);
ThreadWrite threadWrite = new ThreadWrite(writeData, pipedOutputStream);
threadRead.start();
threadWrite.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}