在进行I/O学习的时候,阻塞和非阻塞,同步和异步这几个概念常常被提及,但是很多人对这几个概念一直很模糊。要想学好Netty,这几个概念必须要掌握清楚。
同步与异步的区别在于,异步基于通知,当程序执行完毕后后,会有一个通知的机制来告知你程序执行完毕;而同步则没有,只能通过自己调用API去查询程序是否已经执行完毕。
阻塞与非阻塞的却别在于,阻塞不能执行其他代码,必须等待结果返回。而非阻塞则表示在等待执行结果返回的过程中可以去做别的事情。
同步阻塞:隔壁老王买了一个电饭煲,然后老王开始煮饭,煮饭的过程中一直守着电饭煲什么事情都不干。蠢!
同步非阻塞:老王第二天开始煮饭,煮饭的时候学聪明了,老王跑去客厅看电视了,然后每隔10分钟来看看饭做好没有。恩恩,聪明了许多。
异步阻塞:老王发现做饭怎么这么麻烦呀,于是跑去商场买了一个带通知的电饭煲,当饭煮好以后,电饭煲会播放音乐。老王用新买的电饭煲开始做饭,煮饭的过程中一直守着电饭煲什么事情都不干。蠢到极致!!
异步非阻塞:老王第二天也用新买的电饭煲做饭,这次学聪明了,跑去客厅看电视,然后饭做好了,开始播放音乐。老王这时跑到厨房美滋滋的开始吃起了饭。嗯,完美!
原文:https://www.cnblogs.com/zhxiansheng/p/10789114.html