Java回调~mqtt回调处理中的问题
来源:互联网 发布:广发百发大数据精选 编辑:程序博客网 时间:2024/06/05 02:26
1. java回调机制
回调方法的理解:
例子:
消防员给出一个电话号码119(这是每个人都知道的,119就相当于Java中的一个接口),并在每一个地方都设置一个发生火灾时的检测装置,如果危急到人们的人生安全时,那么市民就可以打119给消防员让消防员来处理。
分析:
消防部门给出的号码119就相当于是一个接口,发生火灾后,市民打电话叫消防员这个动作就是回调。回调的意思就是说:消防部门给我们一个火警电话,发生火灾时我们就可以用这个号码给消防员打电话,但最终处理问题的不是我们自己,而是消防员。我们就相当于是一个信息反馈者,只负责给消防员反馈信息,最终该处理者还是消防员。如下图
回调方法是把功能定义和功能实现分离的一种手段,是一种松耦合的设计思想。Android中的控件响应就是利用了回调方法。
模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,也是我们在写程序中经常使用的;回调是一种双向的调用模式,也就是说,被调用的接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,解决了同步阻塞的问题,举例来讲:A通知B后,他们各走各的路,互不影响,不用像同步调用那样,A通知B后,非得等到B走完后,A才继续走。回调是异步的基本。
2. 代码实现
- I119_CallBack.java
package com.callback.test;public interface I119_CallBack { // 回调方法 public void callBack_119(int num);}
- Call119Listener.java
package com.callback.test;public class Call119Listener implements I119_CallBack{ /** * 回调处理方法 * 如果是119,消防人员出动 */ public void callBack_119(int num) { if(num==119){ System.out.println("--->消防员出动."); } else { System.out.println("--->不在119职责范围内,请联系其他部门."); } }}
- Caller.java
package com.callback.test; /** * 电话设备 * @author GeekHou */public class Caller { // 回调实现类,相当于手机卡或者电话线 private I119_CallBack callBack; // 座机 public Caller() { } // 座机还需接上电话线,对吧 public void setCallListener(I119_CallBack callBack){ System.out.println("--->座机"); this.callBack = callBack; } // 手机 public Caller(I119_CallBack callBack) { System.out.println("--->手机"); this.callBack = callBack; } // 拨号报警 public void callPolice(int num) { System.out.println("--->拨号:"+num); callBack.callBack_119(num); }}
- test119.java
package com.callback.test;public class test119 { public static void main(String[] args) { Caller caller = new Caller(); caller.setCallListener(new Call119Listener()); caller.callPolice(119); }}
输出:--->座机--->拨号:119--->消防员出动.
3. mqtt回调处理中的问题
在进行mqtt客户端开发时,对mqtt对调处理存在疑虑、问题,自己把问题抛到了豆瓣小组上面,但没有人回应还是自己动手丰衣足食。
最近自己开发一个mqtt物联网相关的小项目,pc端java application编程想要实现mqtt客户端发送数据过来后json解析–>添加到mysql数据库中,现在mqtt接收的回调如上图,不太清楚回调中直接完成ui更新、json解析、数据库操作是否合理安全,自己查了一下可能是关于线程池、消息队列、Executor框架(ExecutorService、CompletionService、Future、Callable)这些方面,因为受到Android中handler消息机制的影响,自己又不太懂java application中是否有类似的机制,请问下java回调中进行上述操作是否安全,还有就是想要实现上述3个功能有那种较好的方式给推荐学习一下(-,- )
查询了好多博客,最后还是回到了java的回调上,mqtt的回调类似于Android中按钮点击事件中的回调,看了官方的文档也就消除了上面的困惑。
参考:
[1]http://blog.csdn.net/pi9nc/article/details/23169357
[2]http://blog.csdn.net/zuolongsnail/article/details/6598226
[3]http://www.cnblogs.com/tt_mc/archive/2011/11/09/2243699.html
[4]http://blog.sina.com.cn/s/blog_6ca570ed0101e2r1.html
[5]http://blog.csdn.net/xiaanming/article/details/8703708
- Java回调~mqtt回调处理中的问题
- 微信分享中的回调处理-OnResp
- adapter 回调处理数据
- android 登录回调处理
- java MQTT 客户端问题
- JSP中回调处理的实现
- Dialog 的一些回调处理
- 事件处理007(回调处理)
- OC与C++的回调处理
- Js调用Android回调处理
- css动画效果回调处理
- 关于支付的回调处理
- QQ第三方登陆回调处理
- 微信支付回调处理
- extjs window框的回调处理
- Android开发QQ登陆、分享、空间分享及回调处理 不回调问题的处理
- Java for Web学习笔记(七十):Service和Repository(5)回调处理Consumer
- 关于form+iframe跨域后的js回调处理
- Play的model层,数据库配置
- leetcode No60. Permutation Sequence
- 正则表达式
- 文章标题
- iOS折线图
- Java回调~mqtt回调处理中的问题
- 数据结构实验之栈七:出栈序列判定
- ORACLE实现字符串分割SPLIT
- 简单实用的Android ORM框架TigerDB
- 2016 Multi-University Training Contest 3 1011 Teacher Bo(模拟)
- Android应用分身功能介绍
- 【CDOJ 1341】卿学姐与城堡的墙
- 使用Stopwatch检测代码块的执行时间
- druid简单例子mybatis版