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