import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class Pipe {
public static void main(String args[]) throws Exception {
PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream(in);
Sender s = new Sender(out);
Receiver r = new Receiver(in);
Thread t1 = new Thread(s);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}
class Sender implements Runnable {
OutputStream out;
public Sender(OutputStream out) {
this.out = out;
}
public void run() {
byte value;
try {
for (int i = 0; i < 5; i++) {
value = (byte) (Math.random() * 256);
System.out.print("About to send " + value + ".. ");
out.write(value);
System.out.println("..sent..");
Thread.sleep((long) (Math.random() * 1000));
}
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Receiver implements Runnable {
InputStream in;
public Receiver(InputStream in) {
this.in = in;
}
public void run() {
int value;
try {
while ((value = in.read()) != -1) {
System.out.println("received " + (byte) value);
}
System.out.println("Pipe closed");
} catch (Exception e) {
e.printStackTrace();
}
}
}
|