tramite una variabile booleana potresti richiamare in successione vari sleep per un determinato tempo , esempio:

codice:
boolean sospendi = controllaDeterminataAzione ();
long millisecondi = 1000; //metti tu il tuo valore
while (sospendi) {
Thread.sleep (millisecondi);
sospendi = controllaDeterminataAzione ();
}
ovviamente lo svantaggio di questo procedimento è la cosiddetta "attesa attiva"...