JAVA异步回调解析

转载:http://blog.csdn.net/xiaanming/article/details/8703708/

这一片文章对异步回调和同步回调解析的很生动,可以看一下。

回调主要作用在多线程当中,对于单线程来讲没有多大作用,不知道我这样理解对不对,求大神指点。

首先写我们的回调接口类:

CallBack.java

public interface CallBack {
public void callback(T t);
}

然后写我们进行的耗时操作,通过多线程完成

ConnectionGet.java

public class ConnectionGet {

/**
* 去进行联网的耗时操作,例如下载啊,post,get请求等等
*/
public void execute(final CallBack> callback){
new Thread(new Runnable() {

@Override
public void run() {
try {
Thread.sleep(2000); //模拟联网的耗时操作2秒钟
} catch (InterruptedException e) {

e.printStackTrace();
}
HashMap m = new HashMap();
m.put("k", "v");
callback.callback(m);
}
}).start();

}

}


测试类

Test.java

public class Test{

/**
* @param args
*/
public static void main(String[] args) {

ConnectionGet connectionGet = new ConnectionGet();

/**匿名内部类处理回调**/
connectionGet.execute(new CallBack>() {

@Override
public void callback(HashMap t) {

if(null!=t&&t.size()>0){
System.out.println("maink"+t.get("k"));

}
}
});

}

}

当然,为了更深入的理解那句:

所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法

可以将Test.java改成

public class Test implements CallBack>{
public static void main(String[] args) {
ConnectionGet connectionGet = new ConnectionGet();

connectionGet.execute(new Test());

}

@Override
public void callback(HashMap t) {
if(null!=t&&t.size()>0){
System.out.println("maink"+t.get("k"));
}
}

}

可以将Test类看成是A类,ConnectionGet类看成是B类,execute方法为B类C方法,实现的callback即为A类D方法

好了,,个人理解就到这儿,有什么问题或者我的理解有误求指出。

共同进步!!!


你可能感兴趣的:(JAVA)