Java 异步回调机制实例解析
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 异步回调机制实例解析相关推荐
- java 异步通知_Java 异步回调机制实例解析
什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道"就一个回调-".此时千万个草泥马飞奔而过 哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉.不妨总结总结. 一.什么 ...
- java filter 回调_Java 异步回调机制实例分析
Java 异步回调机制 一.什么是回调 回调,回调.要先有调用,才有调用者和被调用者之间的回调.所以在百度百科中是这样的: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用 ...
- java异步回调历程
java I/O的经历了BIO(Blocking IO),NIO(Non-blocking IO),AIO(Async-I/O),这些IO技术的发展都是依托已java版本的更新. 本文主要研究一下ja ...
- php mvc例子,PHP_ThinkPHP的MVC开发机制实例解析,ThinkPHP是目前国内应用非常广 - phpStudy...
ThinkPHP的MVC开发机制实例解析 ThinkPHP是目前国内应用非常广泛的一款MVC开发框架.本文就以实例形式解析ThinkPHP的MVC开发机制.相信会给大家一定的启发作用.具体分析如下: ...
- Guava Futures异步回调机制源码解析
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/51758194 1.前言 在前两篇文章中简单阐述了Java ...
- Android异步消息处理机制 全解析
Android异步消息处理机制主要是指Handler的运行机制以及Hanlder所附带的MessageQueue和Looper的工作过程. 本文将通过分析源码(api-28)的形式,全面解析Handl ...
- Java 接口回调机制
日常开发中接口回调机制无处不在,刚开始用时却总是晕晕乎乎,网上也有很多相关的文章介绍,但总是没有看得太明白,今天端午假期正好花时间来总结一下,我们按如下顺序介绍 一.什么是接口回调 在应用开发中,接口 ...
- Java接口回调机制
1.什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类同步调用.异步调用和回调. 同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中 ...
- List元素互换,List元素转换下标,Java Collections.swap()方法实例解析
Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...
最新文章
- 清空控制台Console.log()信息
- 幸运数字Ⅱ(树型结构构造答案,打表)难度⭐⭐
- 被人举报,经查属实!985高校公告:撤销其博士学位
- 日志处理两大生态Splunk和ELK深度对比
- 使用pscp命令将windows系统里的文件传送到远程服务器
- 2018 支付宝Java开发四面:Ngnix+MQ队列+集群+并发抢购
- oracle时间类型
- 使用fastjson读取超巨json文件引起的GC问题
- Ps 初学者教程「68」如何创建海报?
- html在手机显示时间,手机北京时间校准
- ionic3 disabled
- 计算机不显示验证码,浏览器中网页验证码不显示的原因与解决办法
- android 数据线有几种,不止是安卓和苹果线,手机数据线原来还有这几种!
- Oracle图书管理系统
- 做前端开发拿 30W 年薪很难吗?
- 4 灰色系统 - 关联度分析法 例子 源代码
- 【web项目】前端生日礼物--主页面篇
- Apache ShardingSphere
- Android9 framework 按键音调用流程及自定义按键音(替换原生按键音)和调节按键音音量的方法
- FLUENT多孔介质数值模拟设置【转载】
热门文章
- Python_装饰器Decorator
- CNN经典模型:GoogLeNet(从Inception v1到v4的演进)
- 特征点提取—尺度不变特征SIFT算法
- java queue iterator_Java DelayQueue iterator()用法及代码示例
- Cycle-1(循环)
- c#和java_C#和Java接口对比
- 第八届蓝桥杯决赛题之平方十位数
- mysql cluster 用户_mysql cluster统一用户权限
- python语言中list和tuple有什么区别_python之list与tuple的区别
- Tomcat Connector