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