阻塞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 listenNIO服务端
网友评论