美文网首页
关于同步异步阻塞非阻塞的区别

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

作者: 九号锅炉 | 来源:发表于2019-05-24 14:39 被阅读0次

    同步和异步的区别:
    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:异步非阻塞。

    相关文章

      网友评论

          本文标题:关于同步异步阻塞非阻塞的区别

          本文链接:https://www.haomeiwen.com/subject/bmpgzqtx.html