首先我们需要理解如下几点
- 同步、异步时信息通信方面----解决问题一种方式
- 阻塞、非阻塞时进程线程方面----当时一种状态
同步解释
例:你要去接热水,热水没开,你在哪里一直等着,返回肯定是接到热水了
异步
例:你要去接热水,热水没开,你回来了,水烧好了,会告诉你
阻塞
例:只有一个饮水机能烧热水,你去接热水,轮到你了,但是没有热水了,就把你挂在哪里你,你一直在哪里等着,好了接到了(得到结果,或者说热水器坏了,今天烧不了热水了,就是给你结果了),你就回去了
非阻塞
例:只有一个饮水机能烧热水,你去接热水,轮到你了,你也不管有不有热水,你就一边去玩了
同步阻塞
一直等待结果(就是同步坐着等待方法,还没有等到结果的状态)
同步非阻塞
得到结果,不论是啥结果(坐着等的方法,得到了结果没等,但不知结果好坏,看系统自己处理)
下面这个例子是转载的,大家可以去他的博客看看,深入浅出写的很好
有A,B,C,D四个人在钓鱼:
A用的是最老式的鱼竿,所以呢,得一直守着,等到鱼上钩了再拉杆;
B的鱼竿有个功能,能够显示是否有鱼上钩,所以呢,B就和旁边的MM聊天,隔会再看看有没有鱼上钩,有的话就迅速拉杆;
C用的鱼竿和B差不多,但他想了一个好办法,就是同时放好几根鱼竿,然后守在旁边,一旦有显示说鱼上钩了,它就将对应的鱼竿拉起来;
D是个有钱人,干脆雇一个人帮他钓鱼,一旦那个人把鱼钓上来了,就给D发个短信。
作者:historyasamirror
原文:https://blog.csdn.net/historyasamirror/article/details/5778378
转载请附带链接,手留余香!