JAVA异步回调解析

    xiaoxiao2022-06-28  41

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

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

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

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

    CallBack.java

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

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

    ConnectionGet.java

    public class ConnectionGet { /** * 去进行联网的耗时操作,例如下载啊,post,get请求等等 */ public void execute(final CallBack<HashMap<String, String>> callback){ new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); //模拟联网的耗时操作2秒钟 } catch (InterruptedException e) { e.printStackTrace(); } HashMap<String,String> m = new HashMap<String, String>(); 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<HashMap<String,String>>() { @Override public void callback(HashMap<String, String> 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<HashMap<String,String>>{ public static void main(String[] args) { ConnectionGet connectionGet = new ConnectionGet();

    connectionGet.execute(new Test());

    }

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

    }

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

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

    共同进步!!!

    转载请注明原文地址: https://ju.6miu.com/read-1124206.html

    最新回复(0)