我想知道当一个观察者在执行被覆盖的方法更新(Observable observable,Object obj)时被多次通知会发生什么。
我有一个具体的 Observable 类:
public class HttpRequestQueue extends Observable{
//an example queue(for explanation) and other class members
public Queue queue..
public void addToQueue(HttpRequest request){
queue.add(request);
setChanged();
notifyObservers();
}
}
另一个类是观察者
public class Webclient implements Observer{
@Override
public void update(Observable observable, Object data) {
while (!observable.queue.isEmpty()){
//NETWORK OPERATION!!
processRequest(queue.remove());
}
}
}
这是主要课程:
public static main(){
HttpRequestQueue qu = new HttpRequestQueue();
Webclient wClient = new WebClient();
qu.addObserver(wClient);
//Now start other application operations
qu.add(new HttpRequest(...)); //Observer's update will be called 1st time
qu.add(new HttpRequest(...)); //Observer's update will be called 2nd time
qu.add(new HttpRequest(...)); //Observer's update will be called 3rd time
}
现在 Observer Webclient 的 update() 的行为将是什么,因为当它第二次被调用时,第一次的执行不会结束。
对不起,如果我听起来像个笨蛋。