Java回调函数的理解

2023-11-14

2008-07-21 20:34
     所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,可以访问远程服务器程序。
    下面举个通俗的例子:
    某天,我打电话向你请教问题,当然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。
通过上面个人感觉到回调更多的应用就是结合异步。比如:Ajax中js通过组件和服务器的异步通信。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java回调函数的理解 的相关文章

随机推荐

  • 黑盒测试与白盒测试的区別

    黑盒测试与白盒测试是软件测试中两种不同的测试方法 它们的主要区别在于测试者对被测试软件的了解程度 下面 我们将详细介绍这两种测试方法的特点和适用场景 一 黑盒测试 黑盒测试又称为功能测试 是针对被测试软件的功能进行测试的一种测试方法 测试者
  • linux 进程几种状态,linux进程状态

    linux系统最常用的命令莫过于ps 经常要用其查看linux的进程和线程情况 此文我们着重来看进程 进程又分为以下几种状态 1 运行 正在运行或在运行队列中等待 2 中断 休眠中 受阻 在等待某个条件的形成或接受到信号 3 不可中断 收到
  • Kotlin Coroutines Flow 系列(一) Flow 基本使用

    一 Kotlin Flow 介绍 Flow 库是在 Kotlin Coroutines 1 3 2 发布之后新增的库 官方文档给予了一句话简单的介绍 Flow cold asynchronous stream with flow build
  • C# socket异步通信服务器和客户端

    本文章向大家介绍C socket异步通信服务器和客户端 主要包括C socket异步通信服务器和客户端使用实例 应用技巧 基本知识点总结和需要注意事项 具有一定的参考价值 需要的朋友可以参考一下 服务器代码 只要客户端连接进来就会接收到Se
  • Qt之QTableView 保持滚动条自动滚动到底部

    在使用QTableView添加数据时 当数据量超出显示范围时会自动的打开滚动条 如果设置了在需要时打开滚动条属性 而默认的是滚动条一直是保持在最顶部 但是有些时候我们添加数据时是需要查看添加的最新结果的 所以一般都会把滚动条滚动到最新数据那
  • 【scrapy】scrapy爬取数据指南

    scrapy是爬虫界常用的基于Python爬虫框架 但是网上找了很多这类的文章 发现有多处错误 故为了让刚想尝试爬虫的蜘蛛们少走点坑 故把最新的方法奉上 在此之前 请先更新你的pip版本 并安装scrapy pymysql pip inst
  • kernelbase.dll崩溃的处理_kernelbase.dll故障教程

    kernelbase dll是存放在windows系统下的一个非常重要的dll文件 DLL英文全称Dynamic Link Library 中文意思是 动态链接库 DLL是一个作为共享函数库的可执行文件 它使进程可以调用不属于本身可执行代码
  • java 代理模式

    1 静态代理 1 1 代码实现 接口 interface Hello String sayHello String str 实现 class HelloImp implements Hello Override public String
  • 对象常用的方法

    思维导图 对象中常用的方法 Object prototype 1 hasOwnProperty 方法会返回一个布尔值 指示对象自身属性中是否具有指定的属性 也就是 是否有指定的键 检测是否为私有属性 即使属性的值是 null 或 undef
  • (五)redis常用命令之list

    概述 列表类型用来存储多个有序的字符串 列表中的每个字符串就是一个元素 一个列表最多可以存储2 32 1个元素 redis的列表结构操作起来非常灵活 应用场景非常广 lpush命令 从列表左边插入多个元素 格式 lpush key valu
  • 使用dockerfile发布go项目

    docker安装 下载docker yum install docker 设置docker随系统启动 chkconfig docker on 启动docker服务 service docker start 启动后查看docker状态 sys
  • pandas Cannot interpolate with all object-dtype columns

    pandas 不能使用所有的 object 类型的列进行插值 这意味着在使用 pandas 的插值函数 例如 interpolate 时 所有的列都必须是数值类型的 如果其中有一列是 object 类型的 则会抛出异常 要解决这个问题 你需
  • 单列模式--Singleton with Go

    package main import fmt sync Singleton 单例对象的类必须保证只有一个实例存在 全局有唯一接口访问 1 懒汉模式 指全局的单例实例在第一次被使用是构建 缺点 非线程安全 type singleton st
  • 软件测试必备的Linux知识(一)

    1 Linux 概述 1 1 测试人员为什么学习linux 对于软件测试人员来说 我们测试的任何产品都是基于操作系统 比如我们每天都在使用的QQ软件 它有windows ios Android Mac OS等版本 需要把QQ安装在各个平台上
  • 虚拟地址,虚拟地址空间, 交换分区

    1 虚拟内存是内存管理的一种方式 它在磁盘上划分出一块空间由操作系统管理 当物理内存耗尽是充当物理内存来使用 它将多个物理内存碎片和部分磁盘空间重定义为连续的地址空间 以此让程序认为自己拥有连续可用的内存 当物理内存不足时 操作系统会将处于
  • 从零开始的ESP8266探索(11)-定时任务调度器Ticker使用演示

    文章目录 目的 使用演示 基本使用1 基本使用2 动态设置和参数传递 停止和重启任务 注意事项 总结 目的 Arduino for esp8266属于无操作系统环境 对于开发多任务的复杂应用还是比较麻烦的 所以这里就提供了一个近似于操作系统
  • bugku No one knows regex better than me

    进入环境是一串php代码 代码审计 考的是正则
  • 感知器的数学表达和训练算法

    目录 一 感知器模型 二 两种训练法则 1 感知器训练法则 2 delta法则 三 小结 1 标准梯度下降算法与随机梯度下降算法的差异 2 有阈值的感知机算法和无阈值的感知机算法的差异 在人工神经网络简介一节中 图二中的ANN系统的每一个单
  • Numpy常用的数据结构

    numpy安装 pip install numpy numpy底层是使用C语言来实现运算的效果非常高 数据清洗的意义 现实生活中 数据并非完美 需要进行清洗才能进行后面的数据分析 数据清洗是整个数据分析项目最消耗时间的一步 数据的质量最终决
  • Java回调函数的理解

    2008 07 21 20 34 所谓回调 就是客户程序C调用服务程序S中的某个函数A 然后S又在某个时候反过来调用C中的某个函数B 对于C来说 这个B便叫做回调函数 例如Win32下的窗口过程函数就是一个典型的回调函数 一般说来 C不会自