Zurück zum Manuskript
// Datei: Pipeline.java // Datum: 05.11.2018 // Autor: Brecht // Thema: Prozesslokale Inter-Thread-Kommunikation mit einer // Pipeline. Benutzt werden die Klassen // * PipedWriter und // * PipedReader. // Der main-Thread richtet die Pipeline mit einer Lese- // und einer Schreibseite ein und startet dann zwei // Threads, von denen einer, der Schreiber genannt wird, // einen String (Hallo) in die Pipeline schreibt und der // andere, der als Leser bezeichnet wird, ihn aus der // Pipeline liest und ausgibt. // ------------------------------------------------------------- import java.io.*; class Pipeline { public static void main(String[] args) { // Pipeline einrichten // ------------------------------------------------------- PipedReader pr = new PipedReader(); PipedWriter pw = new PipedWriter(); try { pr.connect(pw); } catch(Exception e) { System.out.println("Work: connect-Error"); System.exit(0); } // Die beiden Threads bilden und starten // ---------------------------------------------------------- Schreiber sch = new Schreiber(pw); Leser les = new Leser(pr); sch.start(); les.start(); } } // =========================================================== class Schreiber extends Thread { String nachricht = "Hallo"; BufferedWriter bw = null; Schreiber(PipedWriter b) { this.bw = new BufferedWriter(b); } public void run() { System.out.println("Schreiber: schreibe in die Pipe"); System.out.println("Schreiber: Text->" + nachricht); try { bw.write(nachricht); // In die Pipe schreiben bw.newLine(); // readLine() ermöglichen bw.flush(); // Puffer leeren } catch(Exception e) { System.out.println("Schreiber: write-error"); System.exit(0); } } } // ============================================================ class Leser extends Thread { BufferedReader br = null; String s = null; Leser(PipedReader a) { this.br = new BufferedReader(a); } public void run() { System.out.println("Leser: lese aus der Pipe"); try { s = br.readLine(); } catch(Exception e) { System.out.println("Leser: read-error"); System.exit(0); } System.out.println("Leser: habe gelesen->" + s); } }

Zurück zum Manuskript