我有一個需要等待的時間一些未知量的應用程序。它必須等到服務器填充完成幾個數據字段。最好的方法等待在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