netty学习笔记十、Selector、Channel、Buffer关系说明,NIO原理浅谈

一、 Selector、Channel、Buffer关系

1、每个Channel 都会对应一个Buffer
2、Selector对应一个线程,一个线程对应多个channel连接
3、channel注册到selector
4、程序切换到channel需要有事件决定Event是一个重要的概念。
5、Selector会根据不同的事件,在各个通道上切换。
6、buffer就是一个内存块,底层有一个数组 byte[] hb;
7、数据的读取写入是通过Buffer,BIO中的流只能读或写。Buffer可以调用flip()方法进行读写切换。
8、channel是双向的可以返回底层操作的系统情况。

二、NIO 原理浅谈

1、当客户端连接时,会通过ServerSockeChannel得到SocketChanne
2、Selector进行监听,select()方法返回有事件发生的通道的个数。
3、将socketChannel注册到Selector上。register(Selector, int ops)。一个selector上可以注册多个SocketChannel
4、注册后返回一个SelectionKey,会和该Selector关联
5、然后进一步得到各个SelectionKey(有事件发生的)
6、通过SelectionKey反向获取SocketChannel,channel()方法
7、得到channel=>完成操作处理(如:业务处理等)

三、代码演示
Selector小案例

在下盗取两张图别建议
netty学习笔记十、Selector、Channel、Buffer关系说明,NIO原理浅谈_第1张图片

netty学习笔记十、Selector、Channel、Buffer关系说明,NIO原理浅谈_第2张图片

你可能感兴趣的:(【Netty】)