Java-回调函数

本文介绍了回调函数的概念,包括函数调用的三种模式:串行、异步和回调。回调函数允许服务程序在适当的时候反向调用客户程序提供的函数。以一个通俗的例子解释了异步+回调的工作原理,并讨论了在Java中回调的应用,如数据库数据处理后的通知机制。通过定义回调接口和数据处理类,展示了如何在Java中实现回调功能。
摘要由CSDN通过智能技术生成

在这里插入图片描述

什么是回调

函数调用可以分为三种模式,串行调用、异步调用、回调。这三种都是日常开发中常见到的方式。

一个方法执行完,再执行下一个,串行逻辑会阻塞线程执行流程,等到所有逻辑执行结束,线程才会结束。

异步执行是非阻塞类型。在主线程中,可以通过new Thread的方式异步执行逻辑,通过Thread执行的逻辑不会阻塞主流程。类似日志上报,发送kafka消息等,都可以通过异步的方式处理。

回调,就是客户程序A调用服务程序B中的一个函数F_B,然后B又在某个时候反过来调用A中的某个函数F_A,对于A来说,这个F_A便叫做回调函数。一般说来,A不会自己调用F_A,A提供F_A的目的就是让B来调用它。由于B并不知道A提供的F_A姓甚名谁,所以A会约定F_A的接口规范,然后由A提前通过B的一个函数R告诉B自己将要使用F_A函数,这个过程称为回调函数的注册,R称为注册函数。

下面举个通俗的例子: 某天,我打电话向你请教问题,当然是个难题,你一时想不出解决方法,于是我们约定:等你想出办法后打手机通知我 。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。

例子中加粗的两部分说明这是一个“异步+回调“的过程,异步便是我给你打完电话,没有等你相处结果,回调是你在想到办法之后通知我。这里我的手机号就相当提前在你这注册的回调函数,你处理完成之后,直接调用函数来通知我。

通过在工作中的场景,自认为回调和异步更搭配。另外就是写框架性的代码,回调用的会多一些。

java中回调的应用

可以想象一个场景,有数据库需要回填某些数据,数据回填之后要将数据修改数量,结束时间等进行记录。

这个场景是不是和例子比较像,都是主线程下发一个任务,子线程完成任务之后,通知主线程执行其他操作。可以看下代码

首先定义一个回调接口

//接口可以接收多个入参,有一个出餐
public interface FuncCallback<P, R> {
   
    R call(P... p);
}

然后定义数据处理类,这个类的入参除了数据处理中需要的参数外,还需要有回调类

public class DbDataFresh {
   
    /**
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,回调函数是一种常见的设计模式,用于实现事件驱动编程或异步编程。它允许你定义一个函数(或方法),并将其作为参数传递给另一个函数(或方法)。当特定的事件发生时,另一个函数将调用传递进来的回调函数。 以下是一个简单的示例,演示了如何在Java中使用回调函数: 首先,定义一个回调接口(Callback interface): ```java public interface Callback { void onComplete(); } ``` 然后,创建一个包含回调参数的类: ```java public class Task { public void execute(Callback callback) { // 执行一些操作... // 操作完成后调用回调函数 callback.onComplete(); } } ``` 最后,使用回调函数执行任务: ```java public class Main { public static void main(String[] args) { Task task = new Task(); // 创建回调函数的实现 Callback callback = new Callback() { @Override public void onComplete() { System.out.println("任务完成!"); } }; // 执行任务并传递回调函数 task.execute(callback); } } ``` 在上述示例中,回调函数`onComplete()`被定义在`Callback`接口中。`Task`类执行一些操作,并在操作完成后调用传递进来的回调函数。在`Main`类中,我们创建了一个匿名内部类来实现回调函数,并将其传递给`execute()`方法。 当任务完成时,回调函数将被调用,输出"任务完成!"。 这就是使用回调函数的基本过程。通过回调函数,你可以将特定的逻辑与执行任务的代码分离,并在适当的时候触发回调函数。这在处理异步操作或事件驱动的编程中非常常见和有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值