ciao a tutti
guardate questo programma...ci sono 2 thread, un lettore e uno scrittore...il lettore è molto piu veloce..eppure come è possibile che non da segni di output quando viene eseguito e lo scrittore ha prodotto il suo output?

codice:
import java.io.*;

class Sender extends Thread {
   private Writer out;
   public Sender (Writer w) {out = w;}
   public void run() {
      for (char c = 'A'; c <= 'F'; c++)
          try {
            System.out.println("scrivi " + c);
            out.write(c);
            sleep(1000);
         } catch (IOException e) {}
           catch(InterruptedException e) {}
   }
}

class Receiver extends Thread {
   private Reader in;
   public Receiver (Reader r) {in = r;}
   public void run() {
      try {
         while (true) {
            sleep(10);
            System.out.println("leggi " + (char)in.read());
         }
      } catch(IOException e) {System.out.println("fine input");}
        catch(InterruptedException e) {System.out.println("XXX");}
   }
}

class Pipe {
   public static void main(String[] args) {
      PipedWriter out = new PipedWriter();
      PipedReader in = null;
      try {
         in = new PipedReader(out);
      } catch(IOException e) {}
      new Receiver(in).start();
      new Sender(out).start();

   }
}