聊天软件开发之Netty3.x VS Netty4.x的线程模型总结

本文详细对比了Netty 3.x和4.x的线程模型,Netty 4.x采用串行化设计理念,统一由I/O线程处理Inbound和Outbound操作,降低开发难度并提升性能。Netty 3.x的Inbound和Outbound线程模型不统一,可能导致线程安全问题。虽然在特定场景下Netty 3.x可能有性能优势,但Netty 4.x的整体性能更优且更易用。
摘要由CSDN通过智能技术生成

Netty 3.X的I/O操作线程模型比较复杂,它的处理模型包括两部分:

    Inbound:主要包括链路建立事件、链路激活事件、读事件、I/O异常事件、链路关闭事件等;
    Outbound:主要包括写事件、连接事件、监听绑定事件、刷新事件等。

Inbound操作的主要处理流程如下:

    I/O线程(Work线程)将消息从TCP缓冲区读取到SocketChannel的接收缓冲区中;
    由I/O线程负责生成相应的事件,触发事件向上执行,调度到ChannelPipeline中;
    I/O线程调度执行ChannelPipeline中Handler链的对应方法,直到业务实现的Last Handler;
    Last Handler将消息封装成Runnable,放入到业务线程池中执行,I/O线程返回,继续读/写等I/O操作;
    业务线程池从任务队列中弹出消息,并发执行业务逻辑。


通过对Netty 3的Inbound操作进行分析我们可以看出,Inbound的Handler都是由Netty的I/O Work线程负责执行。

Outbound操作的主要处理流程如下:

    业务线程发起Channel Write操作,发送消息;
    Netty将写操作封装成写事件,触发事件向下传播;
    写事件被调度到ChannelPipeline中&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值