Test PipedInputStream and PipedOutputStream with Thread
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class TestPipes {
public static void writeData(OutputStream os) {
try {
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(os));
int[] numArray = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numArray.length; i++) {
out.writeInt(numArray[i]);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void readData(InputStream is) {
DataInputStream in = new DataInputStream(new BufferedInputStream(is));
boolean eof = false;
try {
while (!eof) {
int iValue = in.readInt();
System.out.println("read value = " + iValue);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("End of Data");
}
public static void main(String[] args) throws Exception {
final PipedOutputStream pos = new PipedOutputStream();
final PipedInputStream pis = new PipedInputStream(pos);
Runnable runOutput = new Runnable() {
public void run() {
writeData(pos);
}
};
Thread outThread = new Thread(runOutput, "outThread");
outThread.start();
Runnable runInput = new Runnable() {
public void run() {
readData(pis);
}
};
Thread inThread = new Thread(runInput, "inThread");
inThread.start();
}
}
Related examples in the same category