Czy w Javie jest biblioteka, która wykonuje następujące czynności? Numer thread
powinien być wielokrotnie powtarzany przez 1 milisekundę, dopóki warunek nie zostanie spełniony lub osiągnięty zostanie maksymalny czas.Uśpij i sprawdź, czy warunek jest prawdziwy.
Ta sytuacja występuje najczęściej, gdy test czeka na spełnienie pewnych warunków. Na kondycję wpływa inny thread
.
[EDYCJA] Tylko po to, aby było jaśniejsze, chcę, aby test trwał tylko X ms, zanim się nie powiedzie. Nie może czekać wiecznie, aż warunek stanie się prawdziwy. Dodaję wymyślony przykład.
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
}
}
Jeśli istnieje inny wątek, który je kontroluje, czy można ustawić faktyczny "gotowy" sygnał z oczekiwaniem/powiadomieniem zamiast odpytywaniem? – Thomas
_ Na stan wpływa inny wątek_ Czy mogę powiedzieć, że mogę użyć _Thread join_ tutaj? W każdym razie +1 za pytanie. – Amarnath