java回调机制及其实现

1. 什么是回调函数

回调函数,顾名思义,用于回调的函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性:

  (1)属于工作流的一个部分;
  (2)必须按照工作流指定的调用约定来申明(定义);
    (3)他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的功能;

2.  回调机制

回调机制是一种常见的设计模式,它把工作流内的某个供,按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。

3.java的回调机制

软件模块之间总是存在这一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调、异步调用。

同步调用:一种阻塞式调用,调用方要等待对方执行完毕才能返回,它是一种单向调用;

回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口

异步调用:一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。

回调和异步调用的关系非常紧密:使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。


4.回调的java例子

例1:

public class CallbackExample {
	public static void main(String[] args) {
		FooBar fooBar = new FooBar();
		fooBar.setCallback(new ICallback() {
			public void postExec() {
				System.out.println("在CallbackExample类中实现但不能被CallbackExample的对象调用,而由FooBar对象调用");
			}
		});
	}
}

interface ICallback {
	//需要回调的方法
	public void postExec();
}

class FooBar {
	private ICallback callback;
	public void setCallback(ICallback callback) {
		this.callback = callback;
		doSth();
	}
	
	public void doSth() {
		callback.postExec();
	}
}

例2:

public class CallbackFetcherExample {
	public static void main(String[] args) {
		new Worker().doWork();
	}
}

interface FetchCallback {
	void onData(Data data);
	void onError(Throwable cause);
} 

interface Fetcher {
	void fetchData(FetchCallback callback);
}

class Worker {
	Data data = new Data();
	public void doWork() {
		Fetcher fetcher = new Fetcher() {
			public void fetchData(FetchCallback callback) {
				System.out.println("start fetch data...");
				callback.onData(data);
			}
		};
		fetcher.fetchData(new FetchCallback() {
			public void onData(Data data) { // call if data is fetched without error
				System.out.println("Data received: " + data);
			}
			
			public void onError(Throwable cause) { //call if error is received during fetch
				System.err.println("An error accour: " + cause.getMessage());
			}
		});
	}
}

class Data {
	
}


转载于:https://www.cnblogs.com/jerryshao2015/p/4419658.html

PyCharm高效配置Gitee全攻略 本文介绍了如何在PyCharm和VS Code中配置Gitee插件并管理代码。主要内容包括:1) PyCharm连接Gitee的配置步骤;2) 代码拉取与冲突解决方法;3) VS Code界面功能区域详解;4) 完整的代码提交流程(暂存→提交→推送)。特别说明了VS Code中Git面板的使用方法,以及推送代码到Gitee远程仓库的具体操作步骤。文章还提供了解决代码冲突的建议和注意事项,帮助开发者更好地进行版本控制。 阅读详情

相关推荐

C++面向对象程序设计大作业:魔兽世界(三):开战

C++面向对象程序设计大作业:魔兽世界(三):开战问题描述问题分析代码 问题描述 问题来自于北京大学郭炜老师的C++慕课的大作业 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部。两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 … N ( N <= 20)。红魔军的司令部算作编号为0的城市,蓝魔军的司令部算作编号为N+1的城市。司令部有生命元,用于制造武士。 两军的司令部都会制造武士。武士一共有dragon 、ninja、iceman、lion、wolf 五种。每种武士都有

RedRum_1965的博客 4036

JAVA回调机制

本人学生期间代码接触的都是C++与Matlab,在工作之后由于从事android开发需要接触java开发,于是边学边用,其中踩了不少坑,记录下来大家一起阅读。 1.定义 什么是回调函数?是一个通过函数指针调用的函数。英文为CALLBACK,call then back,回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件进行响应。在JAVA中可以特定理解为:通过函数参数传递到其他代码的,某一块可执行代码的引用。 2.分类 一般将回调函数分为两类:同步回

weixin_43195281的博客 5328

VTK-9.5.0 1D2D3DWidget实现灰度图+深度图+3D点云显示(可轻松集成到自己的项目)

VTK1D2D3DWidget是一个基于Qt和VTK开发的3D点云可视化工具,支持RGB和深度点云数据的显示与处理。主要功能包括点云加载、可视化、保存为PLY格式文件,以及背景颜色、点间隔、坐标轴显示等参数的自定义设置。该工具采用模块化设计,核心组件包括主窗口管理类、VTK渲染组件和自定义鼠标交互样式,依赖Qt5+和VTK9.5.0库实现跨平台支持。项目提供完整的源码和构建指南,适用于点云数据的快速展示与分析。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 385

Java回调(callback)机制

回调的核心:回调方将本身即 this 传递给调用方,这样调用方就可以在调用完毕之后告诉回调方想要知道的信息。 一、简述 从软件模块之间的调用方式看,分为三类:同步调用、异步调用和回调。 1️⃣同步调用 同步调用是最基本并且最简单的一种调用方式,类 A 的 a() 调用类 B 的 b(),一直等待 b() 执行完毕,a() 继续往下走。该调用方式适用于 b() 执行时间不长的情况,因为 b() 执行时间过长或者直接阻塞的话,a() 的余下代码是无法执行下去的,这样会造成整个流程的阻塞。 2️⃣异步调用 异步调

ChineseSoftware的博客 6421

QGIS将经纬度坐标转成点

QGIS绘制一张地图

weixin_46713695的博客 6056

EMD (经验模态分解) 在 C++ 中的实现指南

EMD 是由 Norden E. Huang 等人在1998年提出的一种适用于非线性和非平稳信号的分析方法。对称性:IMF 的上下包络对称。零交叉点:IMF 的零交叉点数量与极值点数量相同或相差一个。本文详细介绍了如何在C++中实现EMD,包括理论背景、算法步骤、代码实现和优化等内容。通过丰富的代码示例和详细的解释,希望能够帮助读者掌握EMD的基本原理,并能够在实际项目中灵活应用。未来,随着信号处理技术的不断发展,EMD及其变种(如EEMD、CEEMDAN等)将继续在各个领域发挥重要作用。

qq_38334677的博客 1749

java+代码回调+编写_Java回调实现

Java回调实现什么是回调回调核心思想案例代码实现后序一、什么是回调开发过程当中存在某种特殊的业务需求,例如:回调生活实例.PNG描述:老板给员工下达了工作任务之后,就去做其他事情了。(此时此 刻,老板不知道需要多长时间完成,不会一直等着,而是做自己其他事情)员工接收到任务之后,按照要求完成任务当员工任务完成的时候,主动的回馈给老板工作情况。当员工回馈工作情况的时候,此时此刻老板还在做另外的事情二...

weixin_39730801的博客 584

导数与微分在 FPS 射击游戏中的实际应用:把“手感”算出来

摘要:射击游戏开发中,单线程适用于简单小游戏(如单机打靶),所有任务由主线程顺序处理,代码简单但效率较低;多线程则适合复杂场景(如多人在线3D大作),通过渲染、逻辑、网络、音效等线程分工协作,确保画面流畅、响应迅速和实时同步。选择依据取决于游戏复杂度、联网需求和性能要求,小型游戏用单线程,大型高要求项目必须采用多线程架构。(149字)

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 3278

两个经典例子让你彻底理解java回调机制

先让我们通过一个生活中的场景来还原一下回调的场景:你遇到了一个技术难题(比如,1+1等于几?太难了!),于是你去咨询大牛,大牛说现在正在忙,待会儿告诉你结果。 此时,你可能会去刷朋友圈了,等大牛忙完之后,告诉你答案是2。 那么,这个过程中询问问题(调用对方接口),然后问题解决之后再告诉你(对方处理完再调用你,通知结果),这一过程便是回调。 系统调用的分类 应用系统模块之间的调用,通常分为:同步调用,异步调用,回调。 同步调用是最基本的调用方式。类A的a()方法调用类B的b()方法,类A的方法需要等到B类的

程序新视界 1167

基于 YOLOv26 的 PCB 板缺陷检测:工业级视觉实战

本文提出了一种基于YOLOv26的PCB板缺陷检测系统,通过深度学习技术实现对PCB板缺陷的自动化检测。系统能够识别短路、开路、焊点不良等8种常见缺陷,具有高精度、多类别分类和实时推理等优势。文章详细介绍了系统架构,包括数据采集、预处理、YOLOv26模型检测和后处理模块。在代码实现部分,给出了环境配置、数据预处理与增强的具体方法,使用Albumentations库进行图像增强处理。该系统为电子制造业提供了高效、准确的PCB质量检测解决方案,显著提升了检测效率和准确性。

一键难忘的博客 337

开源大语言模型GLM-5:从架构解析到部署微调全指南

大语言模型(LLM)作为当前人工智能领域的核心技术,通过海量数据预训练获得强大的语言理解和生成能力。其核心原理基于Transformer架构,通过自注意力机制捕捉长距离依赖关系,在通用语言任务上展现出卓越性能。这一技术价值在于为开发者提供了强大的基座模型,能够通过微调快速适配特定领域需求,显著降低AI应用开发门槛。在实际应用场景中,大模型被广泛用于智能对话、代码生成、内容创作等任务。本文以开源项目GLM-5为例,深入探讨其架构特点,并详细介绍了如何使用LoRA技术进行参数高效微调,以及通过量化优化实现模型在

weixin_28683165的博客 350

java回调机制及其实现(转)

1. 什么是回调函数 回调函数,顾名思义,用于回调的函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性: (1)属于工作流的一个部分;(2)必须按照工作流指定的调用约定来申明(定义); (3)他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作...

weixin_33670786的博客 250

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

回调机制java_java回调机制的实现方式

回调机制在java中应用非常广泛,下面用一个demo简单的实现回调机制1.Time.javapackage com.test;public class Time {private OnTimeChange mOnTimeChange;private int time;/*接口*/public interface OnTimeChange{public void timChange();}/*监听事...

weixin_36205101的博客 317

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java 回调机制样例

最近研究Dubbo,涉及到java 回调机制,所以,就看了下这方面的资料 1.java回调机制 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。 同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用; 回       调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口; 异步调用:一

未知2018 846

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java回调机制的“简单”理解

刚刚接触Java回调的时候真是一脸懵逼,在网上也搜索了大量的资料,试图重新理解。但发现网上的各种解释,阐述的都很复杂,甚至两个类的调用关系都解释反了,误导性很强。下面从工作的应用场景上,分别Java和Android应用两个方面去理解一下。1.多种理解:(1)首先阐述一下,网络上最多的一个类比描述:小王有一个问题需要处理,所以向小李请教。小李说需要思考一下,解答之后再给小王回复。一段时间之后,小李打...

feifei0912的博客 269

java回调机制_Java回调机制详解

曾经自己偶尔听说过回调机制,隐隐约约能够懂一些意思,但是当让自己写一个简单的示例程序时,自己就傻眼了。随着工作经验的增加,自己经常听到这儿使用了回调,那儿使用了回调,自己是时候好好研究一下Java回调机制了。网上关于Java回调的文章一抓一大把,但是看完总是云里雾里,不知所云,特别是看到抓取别人的代码走两步时,总是现眼。于是自己决定写一篇关于Java机制的文章,以方便大家和自己更深入的学习Java...

weixin_31083103的博客 303

java回调机制的简易实现办法

java回调机制的简易实现办法 【转载,出自百度文库 贡献时间:2012-01-29 贡献者: sjailjq 崭露头角 三级 】   1.  什么是回调函数     所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调...

iteye_7849的博客 162

Java 接口回调机制

日常开发中接口回调机制无处不在,刚开开始用时却总是晕晕乎乎,网上也有很多相关的文章介绍,但总是没有看得太明白,今天特意花时间来总结一下 一、什么是接口回调 在应用开发中,接口回调机制是一种常用的设计手段,也可以说是一种处理问题的模型,类之间,模块之间,都有一定的调用关系,一般来说,可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的

QDJdeveloper 6527

理解java的回调机制

Java回调机制一、方法的调用模式理解接口和抽象类的设计理念二、回调场景三、小结 最近学习了一下Java 的回调机制,查看了网络上的一些内容,并借鉴了一些在这里整理一下自己的思路。 一、方法的调用模式 (1)同步调用 同步调用是最基本并且最简单的一种调用方式,类A的方法a()调用类B的方法b(),一直等待b()方法执行完毕,a()方法继续往下走。这种调用方式适用于方法b()执行时间不长的情况,因...

KevinLyz的博客 4294

java 接口回调_Java接口回调机制详解

原标题:Java接口回调机制详解最近在看android fragment与Activity进行数据传递的部分,看到了接口回调的内容,今天来总结一下。二、回调的含义和用途1、什么是回调?一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类同步调用、异步调用和回调。同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中对应函数B的代码得以执行。异步调用是...

weixin_33970380的博客 708

Java回调机制

1.实现方式 1.1A类实现CallBack,同时拥有B类的引用,并且把该类的CallBact对象传给B类 1.2B类从A类获得CallBact对象,并创建call()方法调用CallBact类的方法(即调用A类实现CallBact类的onCall(String s)方法) 1.3A类中callB()方法调用B类引用的方法 1.4当用户实例化A类并调用callB()方法时,实际是调用本身实现

lin 385

java实现接口的机制_深入了解Java接口回调机制

一、前言最近在看android fragment与Activity进行数据传递的部分,看到了接口回调的内容,今天来总结一下。二、回调的含义和用途1、什么是回调?一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类同步调用、异步调用和回调。同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中对应函数B的代码得以执行。异步调用是一种类似消息或事件的机制...

weixin_39639040的博客 187

回调java 简书_Java回调机制详解

曾经自己偶尔听说过回调机制,隐隐约约能够懂一些意思,但是当让自己写一个简单的示例程序时,自己就傻眼了。随着工作经验的增加,自己经常听到这儿使用了回调,那儿使用了回调,自己是时候好好研究一下Java回调机制了。网上关于Java回调的文章一抓一大把,但是看完总是云里雾里,不知所云,特别是看到抓取别人的代码走两步时,总是现眼。于是自己决定写一篇关于Java机制的文章,以方便大家和自己更深入的学习Java...

weixin_32179097的博客 143

Java接口回调机制详解

一、前言 最近在看android fragment与Activity进行数据传递的部分,看到了接口回调的内容,今天来总结一下。 二、回调的含义和用途 1、什么是回调? 一般来说,模块之间都存在一定的调用关系,从调用方式上看,可以分为三类同步调用、异步调用和回调。同步调用是一种阻塞式调用,即在函数A的函数体里通过书写函数B的函数名来调用之,使内存中对应函数B的代码

benpaobagzb的博客 731
上一篇: java观察者模式
下一篇: 观察者模式与回调机制的关系
dgit3228
博客等级 码龄12年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值