Ci sono riuscita...

Il problema era che non controllavo la variabile check nel metodo run del thread2, ma la controllavo in un metodo da me implementato nella classe thread 2.

Quindi nel listener devo settare la variabile check (a seconda dell'arrivo del messaggioA o B) e nel run del thread2 devo controllare ciclicamente tale variabile, quando questa diventa true chiamo il metodo callFunction() che si mette in sleep per tot tempo e poi ricontrolla la variabile check se questa è ancora true si comporta in un modo altrimenti in un altro...

Grazie lo stesso cmq