Esiste una libreria in Java che esegue quanto segue? A thread
deve ripetutamente sleep
per x millisecondi finché una condizione non diventa vera o viene raggiunto il tempo massimo.Sospendi e verifica fino a quando la condizione è vera
Questa situazione si verifica soprattutto quando un test attende che alcune condizioni diventino vere. La condizione è influenzata da un altro thread
.
[EDIT] Solo per rendere più chiaro, voglio che il test attenda solo X ms prima che fallisca. Non può aspettare per sempre che una condizione diventi realtà. Sto aggiungendo un esempio forzato.
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
}
}
Se c'è un altro thread che lo controlla, è possibile impostare un segnale effettivo 'fatto' con wait/notify al posto del polling? – Thomas
_La condizione è influenzata da un'altra discussione_ Posso dire che posso usare _Thread join_ qui? Ad ogni modo +1 per la domanda. – Amarnath