如何理解阻塞,非阻塞,同步,异步

一.问题引出

之前和朋友讨论多线程问题的时候,朋友问了一下阻塞和同步的区别,当时顿时懵逼了。这两个概念给人最直接的感受就是:阻塞也是等,同步也是等呀!好像没什么区别吧委屈

二.概念

阻塞和非阻塞都是通常用来形容多线程间的相互影响。比如一个线程占用了临界资源,那么其他所有需要这个临界资源的线程都要在临界区等待,等待或造成线程的挂起,这种情况就是阻塞。它会一直尝试做,直到完成。平常用到的锁基本上就是阻塞的。

非阻塞的意思和这个相反,它没有强调一个线程可以妨碍其他线程的执行。所有线程都不断向前执行。

同步和异步通常用来形容一个方法的调用,同步方法调用一但开始,调用者必须等到方法调用返回后,才能继续后续的行为。

异步方法调用更像一个消息传递,一但开始,方法调用就会立即返回,调用者可以进行后续的工作,之后会接到一个异步响应通知。比如future。

三 加深记忆

1.同步阻塞

 跑去店里叫份肯德基,一直等到它做完再拿回来。

2.同步非阻塞

跑去店里叫份肯德基,一边刷微博一边问有没有做好。

3.异步阻塞

在网上叫了份肯德基,一直等骑手送过来。

4.异步非阻塞

在网上叫了份肯德基,刷微博等着骑手送来就好了。

现在好理解同步和阻塞了吧

再举一个例子

同步可以理解为师傅做饼,首先需要拿到面粉,然后才做饼。这个是有先后顺序的,后面需要前面的条件。

阻塞可以理解为过独木桥,桥对面的两个人可以是两个独立的线程,只要有人过了桥,下一个才能过。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值