参考:http://blog.csdn.net/fengyifei11228/article/details/5729445

http://kidult.iteye.com/blog/148982

所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。

下面举个通俗的例子:
某天,我打电话向你请教问题,当然是个难题,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。

下面是一个回调的实例>>

客户端具体业务类:

public class ClientBusiness
{/*** 客户端具体业务* @see*/public static void dispose(){System.out.println("dispose with Client Business……");//anything business else}}

客户端提供供服务端回调的接口:

/*** 回调接口* @author will_awoke* @version 2014-6-17* @see ClientCallBack* @since*/
public interface ClientCallBack
{/*** 回调接口的实际执行方法 * @see*/void execute();}

服务端的回调处理:

public class ServerRemote
{/*** 暴漏给Client调用的远程方法* @see*/public  void remote(){//满足一定的业务条件,则调用回调函数,在回调函数内执行客户端的具体业务。if (someCondition()){call(new ClientCallBack(){@Overridepublic void execute(){ClientBusiness.dispose();}});}}private boolean someCondition(){//满足一定的业务条件 some code else ……return true;}private void call(ClientCallBack callBack){//回调函数执行callBack.execute();}}

客户端远程调用:

public class ClientRmi
{/**  * 客户端调用服务端远程方法* @param args * @see */public static void main(String[] args){ServerRemote sr = new ServerRemote();sr.remote();}}

Java 回调函数Callback相关推荐

  1. Java 回调函数的理解

    以下是我对java回调函数的理解,希望对各位有帮助. 简而言之,假设有两个类A与B,还有一个回调接口C(有一个c方法).其中A类持有一个B类对象作为属性和拥有一个a方法,并实现了接口C,所以A类中就有 ...

  2. 服务器响应回调函数,解决有关flask-socketio中服务端和客户端回调函数callback参数的问题(全网最全)...

    由于工作当中需要用的flask_socketio,所以自己学习了一下如何使用,查阅了有关文档,当看到回调函数callback的时候,发现文档里都描述的不太清楚,最后终于琢磨出来了,分享给有需要的朋友 ...

  3. [实战]java回调函数

    下面使用java回调函数来实现一个测试函数运行时间的工具类: 如果我们要测试一个类的方法的执行时间,通常我们会这样做: java 代码 public   class  TestObject { /** ...

  4. java反射回调函数_用J2V8注册Java回调函数

    J2V8是一套针对谷歌的V8 JavaScript引擎的Java绑定.J2V8的开发为Android平台带来了高效的Javascript的执行环境,taris.js 就是基于J2V8开发的.J2V8同 ...

  5. Java 回调函数详解及使用

    Java 回调函数详解 前言: C语言中回调函数解释: 回调函数(Callback Function)是怎样一种函数呢? 函数是用来被调用的,我们调用函数的方法有两种: 直接调用:在函数A的函数体里通 ...

  6. java回调函数的生命_Java车票,车站,生命周期,龟兔赛跑,同步锁,礼让,守护线程,挖金矿【诗书画唱】...

    个人理解:加同步锁等的时候,就可以让线程"按顺序排队",一个一个地抢CPU,一个抢完对应的每次有的CPU了,另一个才抢对应的每次有的CPU,解决"并发"问题等. ...

  7. 理解javascript中的回调函数(callback)【转】

    在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...

  8. JS回调函数(callback)

    在使用Jquery的时候,用到Callback(),回调函数的概念.而且很多. 比如: $.ajax({url:"test.json",type: "GET", ...

  9. linux callback函数,C++回调函数(callback)的使用

    什么是回调函数(callback) 模块A有一个函数foo,它向模块B传递foo的地址,然后在B里面发生某种事件(event)时,通过从A里面传递过来的foo的地址调用foo,通知A发生了什么事情,让 ...

最新文章

  1. php邮箱发送插件,PHP插件PHPMailer发送邮件功能
  2. 单一职责原则(SRP)
  3. 在其他数都出现k次的数组中找到只出现一次的数
  4. vmware安装mac
  5. AUTOSAR从入门到精通番外篇(二)-一文读懂ld链接脚本文件
  6. 第一章:React入门
  7. C语言代码绘制,利用数组输出 0-2Π之间的 sin 函数图像和 cos 函数图像,实验报告及代码。
  8. Linux TTY 串口 struct termios结构体参数
  9. 设置 cmd 窗口默认为快速编辑(quickedit)
  10. [CSS] 用css实现气泡框效果
  11. 微众银行“梦见”区块链
  12. 图片木马制作方法详细教程
  13. Apache -FOPToPDF-Java对象输出实例代码
  14. 第九章泛型与集合(甘琳凤)
  15. 最后三天!当当网3折购书优惠码限时抢
  16. 揭秘互联网人的终极绝招!学会这招受益终生
  17. python-web开发[10]之初始前端
  18. SpringMVC的参数传递
  19. 易基因|精准医学: TERT启动子DNA甲基化在癌症中的双重作用
  20. iperf java_网络性能测试工具Iperf/Jperf

热门文章

  1. 序列周期性与魔术(一)——数学里的函数周期性
  2. 四川锦城学院计算机专业好不,四川大学锦城学院计算机专业如何?
  3. smart显示无服务器,RAKsmart美国服务器常见的问题和解决
  4. RAKsmart高防服务器防御形式解析
  5. 好好说话之Tcache Attack(2):tcache dup与tcache house of spirit
  6. 关于Android 9 隐藏虚拟按键的问题
  7. 数据库中什么是内联接、左外联接、右外联接?
  8. Java程序控制系统输入法
  9. 不想用百度云,那就教你自建属于自己的云盘!
  10. html复习第四课(2_34_0924_html)