Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    [java] buffer con 2 thread

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

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    il lettore viene eseguito 100 volte e non stampa nulla...non capisco come sia possibile...

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    a me da il seguente output:

    scrivi A
    leggi A
    scrivi B
    leggi B
    scrivi C
    leggi C
    scrivi D
    leggi D
    scrivi E
    leggi E
    scrivi F
    leggi F
    fine input
    Premere un tasto per continuare . . .

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    si, anche a me. Volevo sapere come mai il receiver non viene eseguito varie volte...ma forse dipende proprio da come è stata concepita la read...piuttosto che dai thread..non me ne intendo molto di stream, anche se è un bell'argomento

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    in che senso non viene eseguito varie volte?

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    voglio dire che il Thread Receiver, viene costantemente messo in pausa e eseguito varie volte quando il Sender è fermo...anche provando a mettere un altra System.out.println in Receiver...non la esegue...è come se dopo la prima stampa rimanesse bloccato...se ne conosci il motivo bene, se no non importa, era una curiosità

  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    il receiver dopo ogni lettura aspetta che il sender invii qualcosa da leggere, per questo si blocca.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Yess....thks!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.