摘要: 在ServerBootstrapAcceptor启用之前,此刻Reactor状态应该是 NioServerSocketChannel在IO多路复用器上关注着Accept(16)事件 pipeline中有4个handler head bossHandler ServerBootstrapAccepto 阅读全文
posted @ 2022-11-16 22:28 Bannirui 阅读(124) 评论(0) 推荐(0)
摘要: 一 回顾几个时机点 pipeline的初始化 用户向pipeline添加ChannelInitializer辅助实例 Channel注册到复用器之后回调 1 pipeline的初始化 初始化Channel的时候触发了pipeline的初始化 // AbstractChannel.java pipel 阅读全文
posted @ 2022-11-16 22:28 Bannirui 阅读(209) 评论(0) 推荐(0)
摘要: 一 类图关系 在Java的NIO体系中定义了ServerSocketChannel和SocketChannel Netty为了支持Reactor线程模型和异步编程,自己也实现了与Java中对应的两个实现 NioServerSocketChannel NioSocketChannel 从功能职责来看 阅读全文
posted @ 2022-11-16 22:27 Bannirui 阅读(103) 评论(0) 推荐(0)
摘要: 在IO线程NioEventLoop中维护了一个队列实现,用于存放非IO任务,一个IO线程负责N个Channel,为了保证一个线程贯穿始终负责一个Channel的所有任务(任务执行次序有先后区分需要),因此可能IO线程自己将待执行的内容封装成异步任务,也有可能其他线程提交任务(立即执行或者定时任务) 阅读全文
posted @ 2022-11-16 22:26 Bannirui 阅读(130) 评论(0) 推荐(0)
摘要: 前文已经了解过了NioEventLoopGroup和NioEventLoop 在Netty中是用的是Reactor线程模型(IO多路复用器+多个线程),真正处理业务流程的worker线程都是单个线程,一个线程处理多个Channel,一个Channel始终都是由特定的线程进行处理。 在这样的情况下,如 阅读全文
posted @ 2022-11-16 22:26 Bannirui 阅读(124) 评论(1) 推荐(0)
摘要: Netty对Selector的优化体现在两个方面 数据结构替换,数组替换hash表,轮询时直接寻址,提高查询效率 在Linux系统上分装的Selector可能存存在空轮询风险,尽量空轮询出现带来的负面影响 一 数据结构 // NioEventLoop.java NioEventLoop(NioEve 阅读全文
posted @ 2022-11-16 22:24 Bannirui 阅读(205) 评论(0) 推荐(0)
摘要: 前言 Netty没有简单的使用线程池复用线程的方式,而是自己实现了一套EventLoopGroup管理器,管理着EventLoop。 一个Group多个线程方式保证服务器的吞吐率(每个线程负责一个Channel的整个生命周期事件,虽然单个事件效率可能下降,但是利用异步方式增加了吞吐率) 每个NioE 阅读全文
posted @ 2022-11-16 22:23 Bannirui 阅读(158) 评论(0) 推荐(0)
摘要: 一 Demo public class FastThreadLocalTest00 { private final static FastThreadLocal<Long> v = new FastThreadLocal<Long>() { @Override protected Long init 阅读全文
posted @ 2022-11-16 22:18 Bannirui 阅读(65) 评论(0) 推荐(0)
摘要: 一 定义 摘自源码JavaDoc /** * The {@link EventExecutorGroup} is responsible for providing the {@link EventExecutor}'s to use * via its {@link #next()} method 阅读全文
posted @ 2022-11-16 22:18 Bannirui 阅读(116) 评论(0) 推荐(0)
摘要: 结论 java语言层面而言,前++和后++的性能及开销没有区别 java代码 class Demo{ public void pre00(){ int num=0; ++num; } public void post00(){ int num=0; num++; } public void pre0 阅读全文
posted @ 2022-07-25 13:20 Bannirui 阅读(72) 评论(0) 推荐(0)