Sai dove è il problema , sai a cosa è dovuto e ti ho suggerito qualche modo per risolvere..penso non ti manchi nulla!
Quindi o procedi come ti ho suggerito (Thread) o cambi qualcosa nella struttura del tuo programma..
Per finire ti do una piccola dimostrazione su come creare e avviare un Thread:

codice:
Thread t  = new Thread (new Runnable () {
   public void run () {
      //qui ci metti tutte le istruzioni che il thread deve eseguire
   }
});

//per avviare il Thread fai così:
t.start ();
vabè poi ci sono le varianti..puoi creare una classe che estenda Thread e quindi istanziare suoi oggetti oppure puoi creare una classe che implementi Runnable e dare le sue istanze in pasto ad un Thread..l'imbeccata ti è stata data , a te la scelta!