netty源码:(52)AbstractBootstrap之doBind方法

代码如下:
netty源码:(52)AbstractBootstrap之doBind方法_第1张图片
首先调用initAndRegister方法完成ServerSocketChannel的创建、Selector的创建、将ServerSocketChannel注册到Selector.

initAndRegister方法会返回类型为ChannelFuture的对象regFuture,然后在这个ChannelFuture上注册了Listener,当regFuture返回时,注册的Listener的回调方法会被执行(拉姆达表达式里的代码),这里将通过doBind0方法完成ServerSocketChannel和端口的绑定。

那么regFuture是怎么返回的呢?
initAndRegister方法最终会调用AbstractChannel类的register0方法并传入一个ChannelPromise对象(也是最终的返回结果regFuture),
netty源码:(52)AbstractBootstrap之doBind方法_第2张图片
这个方法里通过调用safeSetSuccess(promise),就让ChannelPromise对象返回结果了,initAndRegister方法中调用regFuture.isDone()就返回true,就接着往下调用doBind0方法了。

你可能感兴趣的:(Netty,windows)