搞懂什么是同步,异步,阻塞和非阻塞

前面我一直弄不清楚同步异步和阻塞和非阻塞之间的差别是什么,以为他们就是同一个东西,后来去看了一些博客和相关的书籍之后才知道了他们之间的差别。
要搞懂他们之间的差别首先要知道调用者和被调用者两个概念。只有知道他们两个概念才好区分同步异步和阻塞非阻塞。
其实看他们的名字也很好区分,调用者就可以是用户,然后被调用者就是一些资源。
同步和异步,阻塞和非阻塞针对的对象也是不一样的,对于调用者的就是阻塞和非阻塞,被调用者就是同步和异步。
同步:A调用B,这个时候A只有等待B有结果才会返回。
异步:A调用B,B立即返回,不用等待。等B处理完之后会通过通知或者回调函数来通知A结果。
阻塞:A调用B,B会被吊起,等待B的返回结果,什么事都不可以做。
非阻塞:A调用B,自己会被挂起等待B的结果,但是可以去做别的事情。

这里还可以说说同步阻塞,同步非阻塞,异步阻塞,异步非阻塞几个概念的区别。

同步阻塞:当A调用B的时候,A需要一直在等待,直到B返回结果,期间A不可以做任何事情。
同步非阻塞:当A调用B的时候,A需要等待B返回结果,但是期间可以去做别的事情,但是A需要时不时的确认B是否返回结果。
异步阻塞:当A调用B的时候,B立即返回结果,A不需要等待,到结果返回时B会通知A,但是期间A不可以做别的事情。
异步非阻塞:当A调用B的时候,B立即返回结果,A不需要等待,到结果返回时B会通知A,而且期间A还可以做别的事情。

这里再说一下,Java中的三种I/O模型:BIO,NIO,AIO
BIO:同步阻塞IO
NIO:同步非阻塞IO
AIO:异步非阻塞IO
其实可以看到的是这里没有异步阻塞的模型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值