
package javacodebook.thread.pipes;

import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.IOException;

/**
 * Start des Beispieles.
 *
 * Es werden zwei Threads erzeugt. Der erste Thread generiert in unregelmäßigen
 * Zeitabständen Zufallszahlen und schreibt diese in eine ihm zur Verfügung
 * gestellte Pipe. Der zweite Thread versucht seinerseits in unregelmäßigen
 * Abständen, Daten aus der Pipe zu lesen.
 *
 * @author Mark Donnermeyer
 */
public class Starter {
    public static void main(String []args) throws IOException {
        // Zunächst einmal werden die Enden der Pipe erstellt und miteinander
        // verbunden.
        PipedInputStream  pis = new PipedInputStream();
        PipedOutputStream pos = new PipedOutputStream(pis);
        
        // Schreibender und lesender Thread werden erzeugt und gestartet. 
        // Zur Kommunikation wird ihnen die erstellte Pipe übergeben.
        Thread sink   = new DataSink(pis);
        Thread source = new DataSource(pos);
        
        sink.start();
        source.start();
    }
}