PDA

Visualizza la versione completa : Thread asincroni


VioletFairy
27-05-2010, 20:05
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:



//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()).l og(Level.SEVERE, null, ex);
}
if (!listener.check(idSymbol)){
System.out.println("Method called");
}
else
System.out.println("Method NOT ncalled");
}
}

}


Sapete dirmi perch?

oregon
27-05-2010, 20:24
Per java c' un'apposita sezione ...

Loading