Java的回调机制
来源:互联网 发布:摄像头应用场景 知乎 编辑:程序博客网 时间:2024/06/05 15:31
本文要解决的问题:
简单分析一下Java 的回调机制。
一、回调函数
在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。所谓回调函数是指:在程序中,A类和B类分别有两个函数M1、M2,其中A类首先调用了B类的M2函数,然后B类通过接口回调A类M1函数,我们就将M1称之为回调函数。
二、异步回调
1.1 示例故事背景
有一天毛驴的苹果电脑坏了,就去京东上下单购买一台新的苹果电脑后去公园玩了。京东收到毛驴的订单后,通知仓储包装电脑。当包装完毕后仓储会将电脑交给物流来派送,最后由物流将电脑送到毛驴手上。流程图如下:
1.2 代码示例
在C/C++中,要用回调函数,被调用的函数需要用到调用者自己的指针地址,但在JAVA中没有指针,这么办?我们可以通过接口(interface)来实现回调函数。
package com.lll.callback; /** * 此回调接口的作用是让底层类(京东商城)能够找到上层应用(毛驴) * @author liulongling * */ public interface CallBack { void sendComputer(Computer computer); }
public class Computer { public String name; public Computer(String name){this.name = name;}}
package com.lll.callback; /** * 京东商城 一个底层类 * @author liulongling * */ public class JDShop { private CallBack callBack; //注册一个接口直到要回调谁谁谁 public void setCallBack(CallBack back) { this.callBack = back; } /** * * @param back * @param computer */ public void buy(Computer computer) { System.out.println("京东后台:收到毛驴的请求"); //京东把消息告诉仓库 System.out.println("京东后台通知仓库:包装一台"+computer.name+"电脑发送给毛驴"); //仓库开始包装商品 System.out.println("仓库开始包装"+computer.name+"电脑"); //开始发货 System.out.println("仓库通知京东快递:将"+computer.name+"电脑送到毛驴手上"); callback(computer); } public void callback(Computer computer) { callBack.sendComputer(computer); } }
package com.lll.callback; /** * 作为最上层应用,下层(京东商城)是不知道上层的实现。 * 所以我们通过接口来实现回调函数 * @author liulongling * */ public class MaoLv implements CallBack{ private JDShop shop; public MaoLv() { shop = new JDShop(); shop.setCallBack(MaoLv.this); } public void buyComputer(Computer computer) { System.out.println("毛驴:要购买一台"+computer.name+"电脑"); shop.buy(computer); } @Override public void sendComputer(Computer computer) { System.out.println("毛驴:收到电脑"+computer.name); } }view plain
测试类
package com.lll.callback; public class Test { public static void main(String[] args) { MaoLv lv = new MaoLv(); lv.buyComputer(new Computer("苹果")); } }
1.3 测试结果
控制台:+------------------------------------------------------------------+毛驴:要购买一台苹果电脑
京东后台:收到毛驴的请求
京东后台通知仓库:包装一台苹果电脑发送给毛驴
仓库开始包装苹果电脑
仓库通知京东快递:将苹果电脑送到毛驴手上
毛驴:收到电脑苹果
+------------------------------------------------------------------+
三、同步回调
同步和异步的区别在同步用用会被阻塞,需要等到对方返回结果后才能去做别的事情。
1 0
- Java的回调机制
- java的回调机制
- Java的回调机制
- Java 的回调机制
- java监听机制的原理-回调机制
- 简单回调机制的Java实现
- java回调机制的实现方式
- java回调机制的实现方式
- java Android 回调机制的详解
- java回调机制的理解
- Java的回调机制--学习笔记
- java的接口回调机制详解
- java回调机制的使用
- JAVA回调机制的理解
- Java回调机制的多线程实现
- java回调机制的通俗理解
- java回调机制
- java回调机制
- 远程挂载和远程调试
- 自定义底部菜单,当弹出输入法时,底部菜单被挤到输入法上面
- Android中adb push和adb install的使用区别
- 安装mongodb以及使用Robomongo
- android 数据库的增删改查
- Java的回调机制
- Xms Xmx PermSize MaxPermSize
- APUE读书笔记-第十一章 线程
- HashTable 和 HashMap 的区别
- Linux常用的几个监控系统性能的命令
- 压缩pdf大小的方法分享
- 数学题目
- 测试博客
- SMP hybrid 开发实验2: Logon