资料
黑马程序员Netty全套教程, netty深入浅出Java网络编程重点教程_哔哩哔哩_bilibili P139-144
使用NIO启动服务器代码
使用Netty启动服务器代码
Debug流程
到doBind(final SocketAddress localAddress)方法
进入initAndRegister()方法
进入channelFactory.newChannel()方法:使用了反射的方法调用构造函数
调用了NioServerSocketChannel的构造函数
查看DEFAULT_SELECTOR_PROVIDER(第三步)
随后进入newSocket方法
完成第三步创建ServerSocketChannel:ServerSocketChannel ssc = ServerSocketChannel.open();
进入NioServerSocketChannel(ServerSocketChannel channel) 方法(第四步)
完成第四步:设置非阻塞模式
退回initAndRegister()方法进入init方法
在init方法中,初始化handler等待nio线程执行
退回initAndRegister()方法
进入register方法
进入register(EventLoop eventLoop, final ChannelPromise promise)方法
Nio线程执行register0(ChannelPromise promise)
进入doRegister()方法(第五步)
ssc注册到Selector中,附件是NioServerSocketChannel
退回register0(ChannelPromise promise)进入invokeHandlerAddedIfNeeded()
进入到之前主线程添加一个初始化的handler,现在nio执行
退回register0(ChannelPromise promise)进入safeSetSuccess(promise):设置promise状态
进入到之前主线程执行完initAndRegister()方法后,添加的promise回调方法,进入doBind0(...)方法
进入到bind(final SocketAddress localAddress, final ChannelPromise promise)方法
进入doBind(SocketAddress localAddress)方法(第六步)
退回到bind(final SocketAddress localAddress, final ChannelPromise promise)方法,进入pipeline.fireChannelActive();