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:
Sapete dirmi perchè?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"); } } }