吃透Netty源码系列四之NioEventLoop

Netty源码解析:NioEventLoop线程执行流程
本文深入剖析Netty中NioEventLoop线程的启动及运行机制,从线程创建到任务执行,包括通道注册、绑定、事件处理等关键步骤,揭示Netty事件驱动模型的核心原理。

新启动的线程的作用

新的线程是个死循环,如果发现有任务的话会执行selectNow(),如果返回0就会开始执行任务,否则没任务就执行选择器的select()方法阻塞,可以看下这个选择策略类,细节后面会讲,先知道为什么开始会执行任务而不是阻塞:
在这里插入图片描述

执行NioEventLoop的run方法

线程其实是执行这个方法:
在这里插入图片描述
执行具体类NioEventLooprun(),这个才是真正的任务,省略了大部分东西,把主要的显示出来而来:

 @Override
    protected void run() {
   
   
        for (;;) {
   
         
             select(curDeadlineNanos); //可能会被选择策略延迟,如果有任务的话      
             processSelectedKeys();        
             runAllTasks()或者runAllTasks(long timeoutNanos);//执行任务             
    }

前两个方法暂时不讲,我们就说最后一个runAllTasks,因为开始的时候会先执行前面提交的任务,前两个方法不会执行。那到底是有什么任务呢,其实就是前面提交的一个注册任务:
在这里插入图片描述

执行任务一(通道注册register0)

主要是里面的doRegister();

 private void register0(ChannelPromise promise) {
   
   
            try {
   
   
				...
                pipeline.invokeHandlerAddedIfNeeded();//handlerAdded事件
                safeSetSuccess(promise);//设置注册成功
                pipeline.fireChannelRegistered();//channelRegistered事件
   
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值