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()).log(Level.SEVERE, null, ex);
}
if (!listener.check(idSymbol)){
System.out.println("Method called");
}
else
System.out.println("Method NOT ncalled");
}
}
}
Sapete dirmi perchè?