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è?