我有一个需要等待的时间一些未知量的应用程序。它必须等到服务器填充完成几个数据字段。最好的方法等待在Java中
服务器的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循环,检查的方法,如果我拥有所有必需的值然而,每一个我被通知唤醒时间()?
观察和观察的,与每一次我Observer.Update()检查,如果我有所有所需的值还没有一个方法被调用?
什么是最好的方法?谢谢。
“服务器的API还提供了一种方法来接收我的数据,一次一个字段”。这是如何运作的?呼叫是否等待该特定字段被填充或是否立即返回,有无字段数据? – 2012-02-23 11:21:53
@四十二为了接收消息,服务器要求我在psuedocode中实现接口“ServerDeliveryMethods”。因此,当服务器向我发送数据时,它会调用此方法,并将数据填入参数中。 – rallison 2012-02-23 11:54:00
问题是 - 您的客户端应用程序认为“完成”是什么?不管你可能需要一个单独的线程来与服务器进行通信,还有一个信号量(概念,而不是类)在你的主线程中等待,这会保护'decideWhatToDoNext()'方法。 – Perception 2012-02-23 11:55:30