Java-同步调用-异步调用-回调

一、简述

从软件模块之间的调用方式看,分为三类:同步调用、异步调用和回调

1️⃣同步调用

同步调用是最基本并且最简单的一种调用方式,类 A 的 a() 调用类 B 的 b(),一直等待 b() 执行完毕,a() 继续往下走。该调用方式适用于 b() 执行时间不长的情况,因为 b() 执行时间过长或者直接阻塞的话,a() 的余下代码是无法执行下去的,这样会造成整个流程的阻塞。

2️⃣异步调用

异步调用是为了解决同步调用可能出现阻塞,导致整个流程卡住而产生的一种调用方式。类 A 的 a() 通过新起线程的方式调用类 B 的 b(),代码接着直接往下执行,这样无论 b() 执行时间多久,都不会阻塞住 a() 的执行。但是,由于 a() 不等待 b() 的执行完成,在 a() 需要 b() 执行结果的情况下(视具体业务而定,有些业务比如启异步线程发个微信通知、刷新缓存这种就没必要),必须通过一定的方式对 b() 的执行结果进行监听。Java 中,可以使用 Future+Callable 的方式做到这一点。CompletableFuture更常用

3️⃣回调

在面向对象的语言中,回调则是通过接口或抽象类来实现的,实现这种接口的类为回调类,回调类的对象为回调对象。回调的思想是:

  1. class A 实现接口 CallBack——背景 1
  2. class A 中包含一个 class B 的引用 b——背景 2
  3. class B 有一个参数为 callback 的方法 b(CallBack callback)——背景 3
  4. A 的对象 a 在自己的 a() 里调用 B 的方法 b(CallBack callback)——A 类调用 B 类的某个方法
  5. 然后 b 就可以在 b(CallBack callback) 中调用 A 的方法——B 类调用 A 类的某个方法

综上:

  • 类 A 的 a() 调用类 B 的 b()。
  • 类 B 的 b() 执行完毕主动调用类 A 的 callback()。

该调用方式如图,也就是一种双向的调用方式。回调函数是一个函数或过程,不过它是一个由调用方自己实现,供被调用方使用的特殊函数。

二、下载文件的例子,很好!

(25条消息) Java回调方法(CallBack)_Amosstan的博客-CSDN博客_java 回调

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值