Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Thread asincroni

  1. #1

    Thread asincroni

    Ragazzi ho bisogno del vostro aiuto, vi spiego la mia situazione:

    io ho un Listener in ascolto di messaggi, devo far in modo che se vengono ricevuti messaggio A e entro TOT tempo messaggio B accade una cosa, altrimenti se non viene ricevuto il messaggio B ne accade un'alra.

    Per questo ho una variabile boolean (check) in Listener che mi dice se è stato ricevuto il messaggio B. In oltre, al ricevere del messaggio A chiamo un altro thread (thread2) il quale si mette il sleep TOT secondi poi controlla la variabile check e se è true fa una cosa se è false ne fa un altra.

    In oltre quando il Listener riceve il messaggio A check diventa true, quando riceve il messaggio B check è false.

    Il problema è che il Listener aspetta che termini il suo lavoro il thread2 per occuparsi del messaggio B e quindi non funziona il mio approccio...

    E' come se i 2 thread fossero correlati... Ma non dovrebbero essere indipendenti l'uno dall'altro così che il Listener possa ricevere altri messaggi anche quando thread2 è in sleeep?

    vi posto il codice:

    codice:
    //Listener.java
    
    //da qualche parte che ora non vi interessa faccio
    ExternalThread t = new ExternalThread(this);
    t.start();
    
    public void messaggioA() {
            check = true;
    	t.callFunction();
    }
    
    public void messaggioB() {
            check = false;
    
    }
    
    //Thread2.java
    
    public class Thread2extends Thread {
    
    
        Listener listener = null;
    
        public ExternalThread(MyListener listener){
            this.listener = listener;
        }
    
        public void callFunction(){
            try {
                sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(ExternalThread.class.getName()).log(Level.SEVERE, null, ex);
            }
            if (!listener.check(idSymbol)){
               System.out.println("Method called");
            }
            else
                System.out.println("Method NOT ncalled");
        	}
        }
    
    }
    Sapete dirmi perchè?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Per java c'è un'apposita sezione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.