Gibt es eine Java-Bibliothek, die Folgendes ausführt? A thread
sollte wiederholt sleep
für x Millisekunden, bis eine Bedingung erfüllt oder die maximale Zeit erreicht ist.Schlafen und überprüfen, bis die Bedingung erfüllt ist
Diese Situation tritt meistens auf, wenn ein Test darauf wartet, dass eine Bedingung erfüllt wird. Die Bedingung wird von einem anderen thread
beeinflusst.
[EDIT] Nur um es klarer zu machen, möchte ich den Test auf nur X ms warten, bevor es fehlschlägt. Es kann nicht ewig auf eine Bedingung warten, um wahr zu werden. Ich füge ein künstliches Beispiel hinzu.
class StateHolder{
boolean active = false;
StateHolder(){
new Thread(new Runnable(){
public void run(){
active = true;
}
}, "State-Changer").start()
}
boolean isActive(){
return active;
}
}
class StateHolderTest{
@Test
public void shouldTurnActive(){
StateHolder holder = new StateHolder();
assertTrue(holder.isActive); // i want this call not to fail
}
}
Wenn es einen anderen Thread gibt, der es kontrolliert, können Sie ein tatsächliches 'Fertig'-Signal mit wait/notify einrichten, statt das Polling zu benutzen? – Thomas
_Die Bedingung wird von einem anderen Thread beeinflusst_ Kann ich sagen, dass ich _Thread join_ hier verwenden kann? Anyways +1 für die Frage. – Amarnath