2019独角兽企业重金招聘Python工程师标准>>>

一、什么是回调

软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。

回调是一种特殊的调用,至于三种方式也有点不同。

  • 1、同步回调,即阻塞,单向。
  • 2、回调,即双向(类似自行车的两个齿轮)。
  • 3、异步调用,即通过异步消息进行通知。

二、CS中的异步回调(java案例)

比如这里模拟个场景:客户端发送msg给服务端,服务端处理后(5秒),回调给客户端,告知处理成功。代码如下:

回调接口类:

/**
* @author Jeff Lee
* @since 2015-10-21 21:34:21
* 回调模式-回调接口类
*/
public interface CSCallBack { public void process(String status);
}

模拟客户端:

/**
* @author Jeff Lee
* @since 2015-10-21 21:25:14
* 回调模式-模拟客户端类
*/
public class Client implements CSCallBack { private Server server; public Client(Server server) { this.server = server; } public void sendMsg(final String msg){ System.out.println("客户端:发送的消息为:" + msg); new Thread(new Runnable() { @Override public void run() { server.getClientMsg(Client.this,msg); } }).start(); System.out.println("客户端:异步发送成功"); } @Override public void process(String status) { System.out.println("客户端:服务端回调状态为:" + status); }
}

模拟服务端:

/**
* @author Jeff Lee
* @since 2015-10-21 21:24:15
* 回调模式-模拟服务端类
*/
public class Server { public void getClientMsg(CSCallBack csCallBack , String msg) { System.out.println("服务端:服务端接收到客户端发送的消息为:" + msg); // 模拟服务端需要对数据处理 try { Thread.sleep(5 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("服务端:数据处理成功,返回成功状态 200"); String status = "200"; csCallBack.process(status); }
}

测试类:

/**
* @author Jeff Lee
* @since 2015-10-21 21:24:15
* 回调模式-测试类
*/
public class CallBackTest { public static void main(String[] args) { Server server = new Server(); Client client = new Client(server); client.sendMsg("Server,Hello~"); }
}

转载于:https://my.oschina.net/u/3421984/blog/1797506

Java 异步回调机制实例解析相关推荐

  1. java 异步通知_Java 异步回调机制实例解析

    什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道"就一个回调-".此时千万个草泥马飞奔而过 哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉.不妨总结总结. 一.什么 ...

  2. java filter 回调_Java 异步回调机制实例分析

    Java 异步回调机制 一.什么是回调 回调,回调.要先有调用,才有调用者和被调用者之间的回调.所以在百度百科中是这样的: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用 ...

  3. java异步回调历程

    java I/O的经历了BIO(Blocking IO),NIO(Non-blocking IO),AIO(Async-I/O),这些IO技术的发展都是依托已java版本的更新. 本文主要研究一下ja ...

  4. php mvc例子,PHP_ThinkPHP的MVC开发机制实例解析,ThinkPHP是目前国内应用非常广 - phpStudy...

    ThinkPHP的MVC开发机制实例解析 ThinkPHP是目前国内应用非常广泛的一款MVC开发框架.本文就以实例形式解析ThinkPHP的MVC开发机制.相信会给大家一定的启发作用.具体分析如下: ...

  5. Guava Futures异步回调机制源码解析

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/51758194 1.前言 在前两篇文章中简单阐述了Java ...

  6. Android异步消息处理机制 全解析

    Android异步消息处理机制主要是指Handler的运行机制以及Hanlder所附带的MessageQueue和Looper的工作过程. 本文将通过分析源码(api-28)的形式,全面解析Handl ...

  7. Java 接口回调机制

    日常开发中接口回调机制无处不在,刚开始用时却总是晕晕乎乎,网上也有很多相关的文章介绍,但总是没有看得太明白,今天端午假期正好花时间来总结一下,我们按如下顺序介绍 一.什么是接口回调 在应用开发中,接口 ...

  8. Java接口回调机制

    1.什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类同步调用.异步调用和回调. 同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中 ...

  9. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

最新文章

  1. 清空控制台Console.log()信息
  2. 幸运数字Ⅱ(树型结构构造答案,打表)难度⭐⭐
  3. 被人举报,经查属实!985高校公告:撤销其博士学位
  4. 日志处理两大生态Splunk和ELK深度对比
  5. 使用pscp命令将windows系统里的文件传送到远程服务器
  6. 2018 支付宝Java开发四面:Ngnix+MQ队列+集群+并发抢购
  7. oracle时间类型
  8. 使用fastjson读取超巨json文件引起的GC问题
  9. Ps 初学者教程「68」如何创建海报?
  10. html在手机显示时间,手机北京时间校准
  11. ionic3 disabled
  12. 计算机不显示验证码,浏览器中网页验证码不显示的原因与解决办法
  13. android 数据线有几种,不止是安卓和苹果线,手机数据线原来还有这几种!
  14. Oracle图书管理系统
  15. 做前端开发拿 30W 年薪很难吗?
  16. 4 灰色系统 - 关联度分析法 例子 源代码
  17. 【web项目】前端生日礼物--主页面篇
  18. Apache ShardingSphere
  19. Android9 framework 按键音调用流程及自定义按键音(替换原生按键音)和调节按键音音量的方法
  20. FLUENT多孔介质数值模拟设置【转载】

热门文章

  1. Python_装饰器Decorator
  2. CNN经典模型:GoogLeNet(从Inception v1到v4的演进)
  3. 特征点提取—尺度不变特征SIFT算法
  4. java queue iterator_Java DelayQueue iterator()用法及代码示例
  5. Cycle-1(循环)
  6. c#和java_C#和Java接口对比
  7. 第八届蓝桥杯决赛题之平方十位数
  8. mysql cluster 用户_mysql cluster统一用户权限
  9. python语言中list和tuple有什么区别_python之list与tuple的区别
  10. Tomcat Connector