Java回调~mqtt回调处理中的问题

1. java回调机制

回调方法的理解:
例子:
  消防员给出一个电话号码119(这是每个人都知道的,119就相当于Java中的一个接口),并在每一个地方都设置一个发生火灾时的检测装置,如果危急到人们的人生安全时,那么市民就可以打119给消防员让消防员来处理。
分析:
  消防部门给出的号码119就相当于是一个接口,发生火灾后,市民打电话叫消防员这个动作就是回调。回调的意思就是说:消防部门给我们一个火警电话,发生火灾时我们就可以用这个号码给消防员打电话,但最终处理问题的不是我们自己,而是消防员。我们就相当于是一个信息反馈者,只负责给消防员反馈信息,最终该处理者还是消防员。如下图
java回调机制
  回调方法是把功能定义和功能实现分离的一种手段,是一种松耦合的设计思想。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回调处理
  最近自己开发一个mqtt物联网相关的小项目,pc端java application编程想要实现mqtt客户端发送数据过来后json解析–>添加到mysql数据库中,现在mqtt接收的回调如上图,不太清楚回调中直接完成ui更新、json解析、数据库操作是否合理安全,自己查了一下可能是关于线程池、消息队列、Executor框架(ExecutorService、CompletionService、Future、Callable)这些方面,因为受到Android中handler消息机制的影响,自己又不太懂java application中是否有类似的机制,请问下java回调中进行上述操作是否安全,还有就是想要实现上述3个功能有那种较好的方式给推荐学习一下(-,- )
  查询了好多博客,最后还是回到了java的回调上,mqtt的回调类似于Android中按钮点击事件中的回调,看了官方的文档也就消除了上面的困惑。
setCallbackMqttCallback
参考:

  1. Java回调机制解析
  2. Java回调方法
  3. Java callback JAVA实现回调
  4. 详解Java回调机制 (Callback) 讲解+实例
  5. 一个经典例子让你彻彻底底理解java回调机制
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会画板子的物联网工程师

如果文章还不错,欢迎点赞收藏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值