BIO/NIO

作者: 崽子猪 | 来源:发表于2019-05-23 21:04 被阅读0次

    阻塞IO(BIO)


    一.Java的I/O接口

    1.基于字节操作的I/O接口(InputStream/OutPutStream)

    2.基于字符操作的I/O接口(Reader/Writer)

    3.基于字节操作的I/O接口(Style)

    4.基于字节操作的I/O接口(Socket)


    二.阻塞IO的通信模型

    阻塞IO流程图

    缺点: 1>客户端很多的时候会创建大量的线程,造成CPU负担

             2>阻塞可能会带来频繁的上下文切换,大部分的上下文切换可能是无意义的.会加重CPU的负担


    三.总结

    1.BIO(阻塞式IO)数据再写入OutputStream或者从InputStream读取时有可能会阻塞,会失去我们CPU的调用权.

    2.当前一些需要大量的HTPP长连接的情况

    3.需要另外一种新的I/O操作方式




    NIO

    1.工作原理


    工作原理流程图

    开启专门的线程来处理IO操作


    2.通信模型

    通信模型流程图

    采用了双向通道进行数据传输,在通道上我们可以注册我们感兴趣的事件,比如说:服务端接受客户端连接事件/客户端连接服务端事件/读事件/写事件

    左右两边都各自维护了一个通道,我们称之为Selector.


    3.实例

     NIO客户端

    initClient listen

    NIO服务端

    相关文章

      网友评论

          本文标题:BIO/NIO

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