栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java:NIO— 阻塞、非阻塞、同步、异步

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:NIO— 阻塞、非阻塞、同步、异步

同步和异步的本质区别就在于调用者与被调用者之间结果消息通知机制的不同。

  • 同步:调用者需要一直主动等待被调用者的结果。
  • 异步:调用者调用被调用者后,调用者不会立刻得到结果,在调用者发起调用后,被调用者通过状态、通知或通过回调函数,让调用者知道结果

所以,同步和异步一个是主动等待结果,一个是被动知道结果。

举一个简单的例子:买奶茶,我们有两种方式拿到我们买的奶茶

  • 选择排队等待。这种方式就是同步等待消息通知了,我们需要一直在吧台面前等着我们的奶茶
  • 扫码。这种方式,你可以不停地看手机排号是否到你了(状态),也可以在那里玩手机等着服务员喊 88 号,奶茶好了(通知)。

上面提到异步调用可以通过状态、通知或者回调函数来告知调用者。

  • 状态:调用者需要每隔一段向被调用者发起一个状态查询请求。这种方式效率较为低下。一般我们在调用支付接口的时候,如果服务方告知支付状态未知,则我们需要每隔一段时间去查询该笔订单的支付状态。虽然效率较为低下,但是靠谱。
  • 通知:这种方式,调用者不需要做额外的工作,他只需要等被调用者把结果告诉调用者即可。但是这种方式也有点不是那么靠谱,它到底啥时候调用,如果不调用怎么办呢?这些都是我们需要考虑的问题。
  • 回调函数:和通知机制差不多。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号