美文网首页
认识Java I/O | BIO NIO AIO | 同步与异步

认识Java I/O | BIO NIO AIO | 同步与异步

作者: hisenyuan | 来源:发表于2019-04-13 18:41 被阅读0次

    原文:认识Java I/O | BIO NIO AIO

    一、名词解释

    1.1 同步与异步

    同步与异步更关注交互双方是否可以同时工作

    1. 同步:请求 -> 等待返回 -> 返回 -> 下一次请求,需要等待结果返回(CS非同时工作);
    2. 异步:客户端一直请求,服务端一直处理,不用等待结果返回,比如Future(CS同时工作);

    1.2 阻塞与非阻塞

    阻塞与非阻塞关注交互双方是否可以一心多用

    1. 阻塞:A->B,A一直等着B响应,期间不去干别的(一心一用);
    2. 非阻塞:A->B,A请求完成可以干别的,B响应了再回来继续处理(一心多用);

    1.3 伪异步I/O

    本质上还是同步阻塞I/O
    不过是在服务器把socket链接封装成Task提交给线程池处理
    因为有队列,所以可以突破C:S=1:1的比例

    1.4 I/O多路复用

    通过把多个I/O的阻塞复用到一个阻塞上,从而使得系统在单线程情况下可以处理多个客户端的请求。
    类似于linux的epoll、select

    1.5 多路复用器

    Selector,核心是通过Selector来轮询注册在其上的Channel
    当发现有Channel就绪就返回Channel的选择键集合,进行I/O操作;

    二、不同I/O模型对比表格

    不同I/O模型对比表格.png

    三、参考

    1. 《Netty权威指南 2th》

    相关文章

      网友评论

          本文标题:认识Java I/O | BIO NIO AIO | 同步与异步

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