关于同步异步阻塞非阻塞的区别

同步和异步的区别:
A调用B方法,如果B是同步的,需要等到B执行结束之后再返回通知A;而如果B是异步的,B立刻返回,等B执行结束之后再通过回调通知A。
阻塞和非阻塞的区别:
A调用B方法,如果是阻塞的,A需要一直等待B结束不能做别的事情;如果非阻塞,在B执行过程当中A可以接着去做别的事情。
同步异步的核心在于被调用方B是否立刻返回,与调用方A没有关系。
而阻塞非阻塞的核心在于调用法A在B执行期间是否可以去做别的事情。
因此同步和阻塞 异步和非阻塞是不一样的,他们描述的主体都不一样。
同步也可以是非阻塞的,比如在A调用B时,A可以接着做别的事情(非阻塞),但是B结束之后不会主动通知A(同步);
异步可以是阻塞的,A调用B时,A不可以去做其他事情,B立刻返回,等B结束之后在通知A。
因此最好的方式是异步非阻塞,A调用B时可以接着去做别的事情,等B结束之后再通知A。

Java中提供了三种I/O方式:
BIO(Blocking I/O):同步阻塞
NIO(New I/O):同步非阻塞,通过线程不断论询的方式判断I/O是否结束
AIO:异步非阻塞。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容