Pipe.java Source code

Java tutorial

Introduction

Here is the source code for Pipe.java

Source

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();
        }
    }
}