在启动配置中的方法channel(NioServerSocketChannel.class)会创建一个ReflectiveChannelFactory并赋值给成员变量channelFactory。当调用绑定端口号方法bind(8899)时
2.NioServerSocketChannel的构造函数
在构造函数中首先调用静态方法newSocket(),创建一个Java Nio ServerSocketChannel实例,它继承SelectableChannel。
然后调用父类AbstractNioChannel的构造函数,它会持有上一步创建的ServerSocketChannel实例并赋值给变量ch,同时配置为非阻塞ch.configureBlocking(false),如下:
1. ChannelPipeline的创建
查看父类AbstractChannel可以发现,在构造函数中,创建了ChannelPipeline,并赋值给pipeline对象.
chanel 通过变量pipeline持有ChannelPipeline。
DeflautChannelPin的构造函数接受this为参数,因此ChanelPipe也持有Channel.
2.ChannelPpeline的拦截过滤器模式
ChannelPipeline 中可以添加多个ChannelHander:
接口提供了ChannelHandler的方法,如addFirst等,removeLast()等。
ChannelPipeline是线程安全的,可以随时添加或删除ChannelHandler。
channelPIpeine 中IO事件传播靠
3.channelPipelie 中添加处理耗时任务,有2种方式:
或者在自定义Handler中使用线程池ExecutorService处理。