时间:2021-05-19
这篇文章主要介绍了通过简易例子讲解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中实现回调机制的大体步骤吧:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
java回调函数例子,及其原理,与代理模式的区别回调函数应用程序(applicationprogram)会时常通过API调用库里所预先备好的函数。但是有些库函数
本文实例讲述了Java的回调机制。分享给大家供大家参考,具体如下:一代码interfaceCallBack//回调接口{voidmethodToCallBack
模块之间总是存在这一定的接口,从调用方式上看,可以分为三类:同步调用、回调和异步调用。下面着重详解回调机制。1.概述Java中的回调机制是一个比较常见的机制,只
在类C语言中通常通过函数指针/引用的方式传递。jquery也提供类似的回调函数机制。但是如何正确传递回调函数仍然值得一提。1、不带参数的回调复制代码代码如下:$
很多场景为了不阻塞,都需要异步回调机制。这是一个简单的例子,大家参考使用吧复制代码代码如下:#!/usr/bin/envpython#-*-coding:UTF