LongTimeResponse类代码如下可以看出它之所以能回调调用者是因为其内部有调用者的引用viewer在其构造函数中viewer被赋上了值
package comsitinspring;
public class LongTimeResponse implements Runnable{
private Viewer viewer;
private int count;
public LongTimeResponse(Viewer viewer){
thisviewer=viewer;
thiscount=viewergetCount();
caculateNewCount();
}
private void caculateNewCount(){
Thread thread=new Thread(this);
threadstart();
}
public void run(){
try{
Threadsleep();
}
catch(Exception ex){
exprintStackTrace();
}
viewerprintNewCount(count*count*count);
}
}
这说明程序是异步执行的耗时过程没有影响到主干程序的运行而耗时过程完成后才把返回结果通知了调用者主干程序没有受到耗时过程的影响因此也就不会导致界面停顿响应停止无谓等待等缺陷
以上就是使用回调和线程处理一个耗时响应的整个过程
[] []