掘金 后端 ( ) • 2021-09-20 15:43
我们在Netty的代码中可以看到比较多的ch.eventLoop().execute()这种类型的代码,如果执行代码的线程是绑定线程,那就直接执行即可,如果不是,则使用提交任务的方式,异步使该线程执行,既然是异步,就会有该任务是否执行完成的问题,所以Netty自定义了ChannelFuture来解决这个异步的问题(详情可见我上一篇文章),在doBind方法中,initAndRegister()是一个异步方法,后面会判断该方法的异步执行是否完成,如果完成,则直接执行doBind0方法,如果未执行完成,则等待监听器回调。
if (channel.isRegistered()) {。
到此处,Channel终于注册到了Selector上,但是此处设置的关注的事件是0,NIO的代码中,关注的事件是SelectionKey.OP_ACCEPT,这个地方是在哪里设置的呢 ... 阅读全文