java使用回调和线程处理一个耗时响应全过程2007-11-05现在程序中有许多涉及长耗时响应过程的处理,比如访问WebService,远程调用,复杂处理等,如果我们使用直接顺序执行的方式进行处理有可能导致界面停顿,响应停止,无谓等待等缺陷,这是不应该的。一个耗时响应过程应该采用回调和线程来处理,具体就是把原来的顺序执行修改为异步方式,并让被调用者调用调用者以获得执行结果。在附件的例子中,Viewer就是调用者,它代表界面,而LongTimeResponse是被调用者,它内部用线程启动一个耗时过程,执行完毕再通知调用者。Viewer类代码如下:public class Viewer{ private int count;
public Viewer(int count){ this.count=count; }
public void printNewCount(int newCount){ System.out.println("New Count="+newCount); } public int getCount() { return count; } public void setCount(int count) { this.count = count; } }LongTimeResponse类代码如下,可以看出,它之所以能回调调用者,是因为其内部有调用者的引用viewer,在其构造函数中viewer被赋上了值:package com.sitinspring; public class LongTimeResponse implements Runnable{ private Viewer viewer; private int count;
public LongTimeResponse(Viewer viewer){ this.viewer=viewer; this.count=viewer.getCount();