Netty源码分析
文章平均质量分 90
Netty源码分析
不早睡不改名@
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Netty源码分析--认真系列(二)
本文深入分析Netty的事件处理机制,重点讲解入站事件和出站事件的传播流程。主要内容包括:1) 入站事件处理流程,从NioEventLoop检测事件开始,通过Unsafe对象触发channelRead事件,最终在Pipeline中从head向tail传播;2) 详细解析executionMask位掩码机制,该机制高效记录Handler实现的方法;3) 介绍常见入站事件类型及其触发时机,如channelRegistered、channelActive等。文章通过源码分析展示了Netty高效的事件处理架构。原创 2026-03-12 10:26:03 · 1267 阅读 · 0 评论 -
Netty源码分析--认真系列(一)
Netty源码分析--认真系列(一)原创 2026-03-06 21:10:01 · 2051 阅读 · 0 评论 -
Netty源码分析---位运算详解
本文详细讲解了位运算的基础知识及其在Java NIO中的实际应用。首先介绍了位运算的基本概念和二进制表示方法,重点解析了左移运算符(<<)、位或运算(|)和位与运算(&)三种核心运算符的原理和使用场景。通过SelectionKey中的事件常量定义(OP_READ、OP_WRITE等)具体示例,展示了如何利用位运算高效地组合和判断多个事件状态。文章采用图解方式直观展示运算过程,并解释了这种设计在性能优化中的重要作用,为理解Java NIO底层机制提供了基础支撑。原创 2026-03-06 21:07:39 · 323 阅读 · 0 评论 -
Netty源码分析---waken方法详解
本文深入解析了Netty中NioEventLoop的两个关键机制:SelectStrategy状态和wakenUp标志。首先指出SelectStrategy.CONTINUE和BUSY_WAIT在实际运行中极少出现,默认实现仅返回SELECT状态或selectNow()结果,这两个特殊状态主要是为扩展性预留。其次详细阐述了wakenUp原子标志的作用,通过时序图展示了它在避免"唤醒丢失"竞态条件中的关键价值,解释了其如何确保任务提交后能可靠唤醒事件循环线程。文章通过源码分析和场景对比,揭原创 2026-03-06 21:07:01 · 393 阅读 · 0 评论 -
Netty源码分析---ThreadPerTaskExecutor与线程创建详解
Netty源码分析---ThreadPerTaskExecutor与线程创建详解原创 2026-03-06 21:06:07 · 166 阅读 · 0 评论 -
Netty源码分析---processSelectedKeys() vs runAllTasks()
文章摘要 本文对比分析了Netty中processSelectedKeys()和runAllTasks()两个核心方法的区别与作用。processSelectedKeys()负责处理网络IO事件(如读写、连接等),由Selector触发;而runAllTasks()处理应用层任务(如注册、业务逻辑等),从taskQueue中获取任务执行。两者分别对应网络层和应用层的处理,共同构成EventLoop的事件循环机制。文章通过代码示例和形象比喻(如餐厅服务员)生动说明了二者的分工协作关系,并附有详细对比表格。相关原创 2026-03-06 21:05:25 · 88 阅读 · 0 评论 -
Netty源码分析---NioServerSocketChannel-Unsafe初始化详解
Netty源码分析---NioServerSocketChannel-Unsafe初始化详解原创 2026-03-06 21:04:47 · 154 阅读 · 0 评论 -
Netty源码分析---NioEventLoop的run方法详解
本文深入解析了Netty中NioEventLoop的核心run()方法实现。该方法采用无限循环结构,主要包含三个关键步骤:1)通过select()方法等待I/O事件,根据任务队列情况智能选择阻塞或非阻塞模式;2)使用processSelectedKeys()处理I/O事件;3)通过runAllTasks()执行任务队列中的任务。文章详细分析了select()方法的实现逻辑,包括SelectStrategy策略如何根据任务存在与否决定使用selectNow()或阻塞select(),以及wakeup机制的设计原创 2026-03-06 21:03:58 · 361 阅读 · 0 评论 -
Netty源码分析---NioEventLoopGroup深度解析
本文深入解析了Netty中的NioEventLoopGroup线程池实现。NioEventLoopGroup是为NIO模型专门设计的事件循环线程池,由多个NioEventLoop线程组成,每个线程对应一个Selector和任务队列。文章详细介绍了其继承体系、构造过程、线程选择策略等核心机制。重点分析了默认线程数设置为CPU核心数*2的原因,以及bossGroup和workerGroup的分工设计。此外还讲解了线程池创建流程、任务执行机制和优雅关闭过程,揭示了Netty高性能背后的线程模型设计思想。原创 2026-03-06 21:03:06 · 374 阅读 · 0 评论 -
Netty源码分析---inEventLoop方法详解
文章摘要 inEventLoop()方法是Netty中用于判断当前执行线程是否为EventLoop内部线程的关键方法。其核心作用是避免不必要的线程切换,优化性能并防止死锁问题。当外部线程(如main线程)提交任务时会触发EventLoop线程启动,而EventLoop自身线程提交任务时则直接加入任务队列。该方法通过比较当前线程与EventLoop内部线程引用实现判断,在Netty的事件循环机制中起到重要调度作用。典型应用场景包括服务端启动时的线程初始化和Handler内部的任务提交,确保了线程安全和高效的任原创 2026-03-06 21:02:11 · 72 阅读 · 0 评论 -
Netty源码分析---executionMask详解
本文详细解析了Netty中executionMask的设计原理与实现机制。executionMask是ChannelHandlerContext中的位掩码字段,用于优化事件传播性能,避免调用未实现的方法。文章首先解释了其定义和作用,通过位运算示例展示了性能优化原理。然后深入剖析了掩码常量的定义方式,包括入站和出站事件的掩码值。最后详细说明了计算过程,包括通过反射检查Handler实现的方法,并使用位运算组合掩码。文中还包含完整的代码示例,展示了Netty如何缓存和计算掩码,以及如何通过位运算快速判断方法是否原创 2026-03-06 21:01:30 · 60 阅读 · 0 评论
分享