NIO 三大组件
NIO 基础
non-blocking-io 非阻塞IO
1. 三大组件
1.1 Channel & Buffer
channel 有一点类似与strem,他就是读写数据的双向通道,可以从channel将数据读入buffer,也可以将buffer写入channel,而之前的strem要么是输入,要么是输出,channel比stream更为底层
1.1.1常见的channel有
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
1.1.2常见的buffer有
ByteBuffer:
MappedByteBuffer
DirectByteBuffer
HeapByteBuffer
ShortBuffer
IntBuffer
LongBuffer
FloatBuffer
DoubleBuffer
CharBuffer
1.2 Selector 选择器
selector 单从字面意思不好理解,需要结合服务器的设计演化来理解它的用途
多线程版本设计
缺点:
内存占用高
线程上下文切换成本高
只适合连接少的场景
线程池版本设计
缺点:
阻塞模式下,线程仅能处理一个sokcet链接
仅适合短连接场景
selector版设计
selector作用就是配合一个线程来管理多个channel,获取这些channel上发生的事件,channel工作在非阻塞模式下,不会让线程吊死在一个channel上。特别适合链接数特别多,但流量低的场景
调用selector的select()会阻塞直接channe发生了读写就绪事件,这些事件发送,select方法就会返回这些事件交给thread来处理。
原文地址:https://blog.csdn.net/m0_71017987/article/details/144395531
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!