У меня есть приложение, которое должно ждать какое-то неизвестное количество времени. Он должен ждать, пока несколько полей данных не будут заполнены сервером.
API сервера предоставляет мне способ запрашивать данные, достаточно просто ...
API сервера также предоставляет способ получения моих данных по одному полю за раз. Он не сообщает мне, когда все поля будут заполнены.
Какой самый эффективный способ дождаться окончания обработки моего запроса сервером? Вот некоторый псевдокод:
public class ServerRequestMethods {
public void requestData();
}
public interface ServerDeliveryMethods {
public void receiveData(String field, int value);
}
public class MyApp extends ServerRequestMethods implements ServerDeliveryMethods {
//store data fields and their respective values
public Hashtable<String, Integer> myData;
//implement required ServerDeliveryMethods
public void receiveData(String field, int value) {
myData.put(field, value);
}
public static void main(String[] args) {
this.requestData();
// Now I have to wait for all of the fields to be populated,
// so that I can decide what to do next.
decideWhatToDoNext();
doIt();
}
}
Мне нужно подождать, пока сервер не заполнит мои поля данных, и сервер не сообщит мне, когда запрос будет выполнен. Поэтому я должен продолжать проверять, завершил ли мой запрос обработку. Какой самый эффективный способ сделать это?
wait () и notify (), с методом, защищающим цикл while, который проверяет, есть ли у меня все необходимые значения, но каждый раз, когда я просыпаюсь notify ()?
Observer и Observable, с методом, который проверяет, есть ли у меня все необходимые значения, но каждый раз, когда вызывается мой Observer.Update ()?
Какой лучший подход? Благодарю.