java异步回调模式栗子(2015-11-30 00:43:37)
2015-11-30 00:49
435 查看
关于回调模式的概念这里不做介绍,直接上代码
测试类
打印输出结果:
客户端:发送的消息为:Hello Word!
客户端:异步发送消息成功!
服务端:接受到来自客户端的消息:Hello Word!
服务端:数据处理成功,返回状态码:200
客户端:接收到来自服务端的回调状态码:200
packageInfo附录:
java异步回调机制的栗子
概念:回调是一种双向的调用模式,即:you call me,i will call you back
客户端给服务端发送一个请求(消息),服务端接收到这个请求(消息),做完相应的业务流程之后,再给客户端发一个消息告诉客户端这边的处理情况。
关键的点是:在给Server服务端发送消息的时候,将Client的引用作为参数传入,这样Server端处理完业务逻辑之后,调用Client的回调函数即可完成通知回调
package com.dreyer.pattern.callback; /** * @description 回调模式——回调接口类 * @author Dreyer * @email hy.dreyer@qq.com * @date 2015年11月29日 下午11:57:56 * @version 1.0 */ public interface CSCallBack { /** * 回调函数 * * @param status * 回调的状态码 */ public void process(String status); }
package com.dreyer.pattern.callback; /** * @description 回调模式——模拟服务端类 * @author Dreyer * @email hy.dreyer@qq.com * @date 2015年11月29日 下午11:59:44 * @version 1.0 */ public class Server { public void getCliengMsg(CSCallBack csCallBack, String msg) { System.out.println("服务端:接受到来自客户端的消息:" + msg); // 模拟服务端对数据的处理操作 try { Thread.sleep(3 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } // 处理成功后,对回调接口发送回调信息 String status = "200"; System.out.println("服务端:数据处理成功,返回状态码:" + status); csCallBack.process(status); } }
package com.dreyer.pattern.callback; /** * @description 回调模式——模拟客户端类 * @author Dreyer * @email hy.dreyer@qq.com * @date 2015年11月29日 下午11:59:06 * @version 1.0 */ 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.getCliengMsg(Client.this, msg); } }).start(); System.out.println("客户端:异步发送消息成功!"); } @Override public void process(String status) { System.out.println("客户端:接收到来自服务端的回调状态码:" + status); } }
测试类
package com.dreyer.pattern.callback; /** * @description * @author Dreyer * @email hy.dreyer@qq.com * @date 2015年11月30日 上午12:12:26 * @version 1.0 */ public class CallBackTest { public static void main(String[] args) { Client client = new Client(new Server()); client.sendMsg("Hello Word!"); }
打印输出结果:
客户端:发送的消息为:Hello Word!
客户端:异步发送消息成功!
服务端:接受到来自客户端的消息:Hello Word!
服务端:数据处理成功,返回状态码:200
客户端:接收到来自服务端的回调状态码:200
packageInfo附录:
java异步回调机制的栗子
概念:回调是一种双向的调用模式,即:you call me,i will call you back
客户端给服务端发送一个请求(消息),服务端接收到这个请求(消息),做完相应的业务流程之后,再给客户端发一个消息告诉客户端这边的处理情况。
关键的点是:在给Server服务端发送消息的时候,将Client的引用作为参数传入,这样Server端处理完业务逻辑之后,调用Client的回调函数即可完成通知回调
相关文章推荐
- hibernate入门实例
- spring MVC入门
- JAVA事务的概念
- Java 多线程 并发编程
- springMVC数据封装成POJO
- Eclipse/STS 插件相关
- JCF框架源码分析系列-ArrayList(二)
- Mac OSX上折腾JDK
- FCFS,SJF(java实现)
- Eclipse 使用技巧
- 利用SpringMVC框架提供的方法,做文件上传和下载操作
- Spring事务管理的三种方式
- spring quartz定时任务
- 整理的JAVA相关框架
- Spring MVC学习路(一) 下载配置文件
- Spring MVC学习路(二) 设置配置文件
- Spring MVC学习路(三) 编写第一个demo
- Spring MVC学习路(四)了解DispatcherServlet作用
- Java日志框架slf4j API介绍及异常接口实现分析
- java中HashMap详解