原文地址:
博客园:Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明
CSDN:Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明
说明在 Netty 服务端代码中,我们一般会创建了两个 NioEventLoopGroup:bossGroup 和 workerGroup
其中: bossGroup
用于监听端口,接收新连接的线程组;workerGroup
用于处理每一个连接的数据读写的线程组 。
bossGroup 创建第一个 NioEventLoop 线程NioEventLoop 的启动入口在AbstractUnsafe
@Override public final void register(EventLoop eventLoop, final ChannelPromise promise) { ...... AbstractChannel.this.eventLoop = eventLoop; if (eventLoop.inEventLoop()) { register0(promise); } else { try { eventLoop.execute(new Runnable() { @Override public void run() { register0(promise); } }); } catch (Throwable t) { logger.warn( "Force-closing a channel whose registration task was not accepted by an event loop: {}", AbstractChannel.this, t); closeForcibly(); closeFuture.setClosed(); safeSetFailure(promise, t); } } }其中inEventLoop()
方法调用的是AbstractEventExecutor
的实现
@Override public boolean inEventLoop() { return inEventLoop(Thread.currentThread()); }
经验总结扩展阅读
- ZCTF note3:一种新解法
- 三七能长期吃吗
- 关于环境学习生活类的名言急
- 第七次人口普查内容包括什么
- 哪类人不宜吃三七
- 学习ASP.NET Core Blazor编程系列四——迁移
- 火影忍者中佐助鸣人居住学习的村子叫什么?
- 鲁班七号三技能怎么用
- 五 Netty 学习:服务端启动核心流程源码说明
- 七宝镇有什么好玩的