K cemu slouzi java.io.PipedReader a java.io.PipedWriter?

Piped proudy jsou mechanismy v Jave k nastaveni proudu dat mezi 2 vlakna. Pipes proudy maji dvojice proudu – vstupni a vystupni. Data zapisovana do vystupniho proudu by se meli projevit na vstupnim proudu na jinem konci roury. Muzes na Pipe proudy pohlizet jako Buffer, s pripojenim na kazdem konci.
Ukazeme si jednoduchou praci s Piped proudy. Ukazka se sklada ze dvou trid: MyThread (Druhe vlakno nutne k Pipe) a PipeDemo1 (Ukazka pipe proudu)
T MyThread si ve svem K ulozi odkaz na OT Writer, ktery je odvozen od tridy Stream. To je zakladni vec, kterou musite mit na pameti.

class MyThread extends Thread {
 private Writer out;
 public MyThread(Writer out) {
  this.out = out;
 }
 public void run() {
  //-Zapis na zacatek pipe.
  try {
   BufferedWriter bw = new
   BufferedWriter(out);
   bw.write( & quot; testing & quot;);
   bw.newLine();
   bw.close();
  } catch (IOException e) {
   System.err.println(e);
  }
 }
}

Pro praci s Piped proudy musime vytvorit obe konce roury – zde takto figuruji OT PipedWriter a PipedReader. K jejich propojeni staci do jedne v K ulozit odkaz na druhou. Neukladejte tento odkaz do obou, ne ze by to bylo technicky nemozne v teorii, ale v praxi jiz ano. Pro cteni si vytvorim O BufferedReader, ktery mi precte posluchace – readera roury.

public class PipeDemo1
{
    public static void main(String args[])
    throws IOException
    {
        //-Vytvoreni "roury" pipe
        PipedWriter writer = new PipedWriter();
        PipedReader reader = new PipedReader(writer);
        //-Pres vlakno zapis do pipe
        new MyThread(writer).start();
        //-Cteni z konce pipe.
        BufferedReader br = new
        BufferedReader(reader);
        String str = br.readLine();
        br.close();
        System.out.println(str);
    }
}

Leave a Reply