1、要彻底理解阻塞、非阻塞、同步、异步,我们首先得认识以下2个概念,然后结合后面小名的故事就可以很好的理解了

(1)消息通知机制
(2)等待消息状态

2、小名的故事

以小明下载文件打个比方

(1)同步阻塞:小明一直盯着下载进度条,到 100% 的时候就完成。
    同步体现在:等待下载完成通知;
    阻塞体现在:等待下载完成通知过程中,不能做其他任务处理;
(2)同步非阻塞:小明提交下载任务后就去干别的,每过一段时间就去瞄一眼进度条,看到 100% 就完成。
    同步体现在:等待下载完成通知;
    非阻塞体现在:等待下载完成通知过程中,去干别的任务了,只是时不时会瞄一眼进度条;【小明必须要在两个任务间切换,关注下载进度】
(3)异步阻塞:小明换了个有下载完成通知功能的软件,下载完成就“叮”一声。不过小明仍然一直等待“叮”的声音(看起来很            傻,不是吗)。
    异步体现在:下载完成“叮”一声通知;
    阻塞体现在:等待下载完成“叮”一声通知过程中,不能做其他任务处理;
(4)异步非阻塞:仍然是那个会“叮”一声的下载软件,小明提交下载任务后就去干别的,听到“叮”的一声就知道完成了。
    异步体现在:下载完成“叮”一声通知;
    非阻塞体现在:等待下载完成“叮”一声通知过程中,去干别的任务了,只需要接收“叮”声通知即可;【软件处理下载任务,小明处理其他任务,不需关注进度,只需接收软件“叮”声通知,即可】

3、总结

同步和异步仅仅是关注的消息如何通知的机制,而阻塞与非阻塞关注的是等待消息通知时的状态。也就是说,同步的情况下,是由处理消息者自己去等待消息是否被触发,而异步的情况下是由触发机制来通知处理消息者,所以在异步机制中,处理消息者和触发机制之间就需要一个连接的桥梁