惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
宝玉的分享
宝玉的分享
I
InfoQ
P
Privacy International News Feed
V
V2EX
IT之家
IT之家
S
SegmentFault 最新的问题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V2EX - 技术
V2EX - 技术
C
CERT Recently Published Vulnerability Notes
C
Check Point Blog
The Register - Security
The Register - Security
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
AWS News Blog
AWS News Blog
M
MIT News - Artificial intelligence
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Fortinet All Blogs
B
Blog
N
Netflix TechBlog - Medium
B
Blog RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
T
Threatpost
Forbes - Security
Forbes - Security
U
Unit 42
A
Arctic Wolf
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recorded Future
Recorded Future
L
Lohrmann on Cybersecurity
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
月光博客
月光博客
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
I
Intezer
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
MyScale Blog
MyScale Blog
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位

博客园 - 殇

java设计模式基础之设计原则 GEF七天之第五天 java基础--特殊的String GEF七天之第四天 GEF七天之第三天 GEF七天之第二天 GEF七天之第一天 距离矢量路由算法(最短路Bellman-Ford实现)实现 网络编程--简单实现javaftp服务器 网络编程--ftp客户端的实现(c#版) c#套接字的实现 好东西大家分享: JAVA学习的一些重点 最基础的数据结构(转自程序员杂志) java面试算法题(经典) (转)JSP上传视频后自动转成flv的核心JAVA方法 2008年1月编程语言排名(转) 利用Render方法生成静态页 (转)实现struts2的CRUD中的权限控制(二) (转)实现struts2的CRUD中的权限控制(一)
java--callback
· 2008-09-04 · via 博客园 - 殇

    早有写贴的打算,无奈,刚刚出来工作,也是初到北京!生活还不安定,根本没有办法来写,终于回学校了!

    废话少说,在北京时,一位刚毕业的师兄,有一天问我:什么是CALLBACK!,说是面试时,有好多个公司都问了这个问题!当时我一时无语,只记着,在阅读thinking in java是看到过有关他的介绍,但具体也说不清楚了,于是赶紧翻书,上网查资料。发现虽然都说的比较全面,但是都不是好理解!后来我又阅读了c++中回调函数的概念,才对他有了一个模糊的认识!

  其实我们从字面意思来判断,就已经知道他大概的意思了,我从网上摘抄的定义是:软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口(有待商榷);异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。是不是有点抽象,其实我们可以举个简单的例子:我写个程序(也可能是个类,或者是个组件)称为a,其中预留有回调函数接口,并封装好了该程序。另外一个人B要让a调用自己的程序b中的一个方法,于是,他通过我提供的接口回调自己b中的方法,目的达到。

  然后我们就可以写程序了,

Code

OK,可以看到b实现了a回调他的方法!我们再来看个具体的例子,可能要复杂一点!有这样的一个问题:

老板(Boss)让工人(Worker)干完活告诉他干的情况如何。(来自网上的例子http://lavasoft.blog.51cto.com/62575/90453

这是一个典型的回调问题,即工人要调用老板提供的接口,并且要老板调用学生的方法或属性,来了解工人的完成情况

代码如下:

Code

   我们可以看到在boss中,我们回调了工人的happendEvent方法,一般我们都用接口来实现回调!