这篇文章主要介绍了通过简易例子讲解Java回调机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
首先说点题外话。为什么要写这篇文章,因为在看J.U.C包的FutureTask源码的时候,有一个done()方法,这是个抽象方法,用户实现它之后,FutureTask会在执行完后调用这个方法。这就是回调机制,回调的思想就是:
给出思想过于抽象,所以我会举出一个简单的实例(虽然简单,但是能说明问题),并总结Java实现回调的步骤。
实例基于知乎上一个解释什么是回调机制的回答。
描述: 一个顾客入住了一个酒店,酒店提供叫醒服务,顾客由于第二天早晨有很重要的事情,所以使用了叫醒服务。让酒店工作人员在第二天早晨7:00叫醒顾客。
在这个例子中,顾客是A类,酒店是B类,顾客预订叫醒服务相当于A调用了B的b方法,酒店叫醒顾客相当于B调用了A的callback方法(被叫醒)。
下面给出代码:
1、首先是回调接口:
package callback; //回调接口 public interface CallBack { public void beWakedUp(); }
2、接着是顾客类
顾客类实现回调接口
package callback; public class Customer implements CallBack { //顾客同时持有酒店类的对象,后面定义 private Hotel hotel; public Customer(Hotel hotel) { this.hotel = hotel; } @Override public void beWakedUp() { System.out.println("被叫醒了"); } // 客户预约使用酒店的叫醒功能 public void bookWakeService() { hotel.wakeService(this); } // 省略get set }
3、酒店类
package callback; public class Hotel { public void wakeService(CallBack callBack) { System.out.println("顾客预约了叫醒服务"); try { // 模拟时间过了一晚上 Thread.sleep(3000); System.out.println("时间过去了一夜"); callBack.beWakedUp(); } catch (InterruptedException e) { e.printStackTrace(); } } }
4、测试主类
package callback; public class Main { public static void main(String[] args) { Hotel hotel = new Hotel(); Customer customer = new Customer(hotel); customer.bookWakeService(); } }
输出结果为:
不知道你对回调机制有没有进一步理解呢?
最后总结一下Java中实现回调机制的大体步骤吧:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍java回调机制实例详解,包括了java回调机制实例详解的使用技巧和注意事项,需要的朋友参考一下 java回调机制实例详解 以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是
本文向大家介绍Java的回调机制实例详解,包括了Java的回调机制实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java的回调机制。分享给大家供大家参考,具体如下: 一 代码 二 运行 I've been called back 三 说明 回调机制的真正意图,就是实现控制反转,通过控制反转。对象在被创建的时候(如A处),由一个能够调控系统内所有对象的外界实体(如B处的caller
本文向大家介绍java 回调机制的实例详解,包括了java 回调机制的实例详解的使用技巧和注意事项,需要的朋友参考一下 java 回调机制的实例详解 序言 最近接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我
本文向大家介绍Java回调机制解读,包括了Java回调机制解读的使用技巧和注意事项,需要的朋友参考一下 模块间调用 在一个应用系统中,无论使用何种语言开发,必然存在模块之间的调用,调用的方式分为几种: (1)同步调用 同步调用是最基本并且最简单的一种调用方式,类A的方法a()调用类B的方法b(),一直等待b()方法执行完毕,a()方法继续往下走。这种调用方式适用于方法b()执行时间不长的情况,因为
本文向大家介绍简单讲解Lua中的垃圾回收机制,包括了简单讲解Lua中的垃圾回收机制的使用技巧和注意事项,需要的朋友参考一下 Lua使用基于被内置在Lua某些算法的垃圾收集自动内存管理。可以自动内存管理的结果,作为一个开发者: 没有必要担心的对象分配内存。 无需释放他们时,不再需要可将其设置为nil。 Lua使用运行不时收集死的对象时,不再从Lua程序中访问垃圾收集器。 所有对象,
本文向大家介绍通过实例了解java序列化机制,包括了通过实例了解java序列化机制的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了通过实例了解java序列化机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 序列化是指对象通过写出描述自己状态的数值来记录自己的过程,即将对象表示成一系列有序字节,Java提供了将对象写入流和从流中恢复对