摘要:
继承关系 该接口与 给大动脉来一刀 - ChannelPipeLine 接口一样都继承了 ChannelOutboundInvoker 和 ChannelInboundInvoker, 这两个接口下面有说. 关于 AttributeMap 接口可以储存自定义的属性. ChannelInboundIn 阅读全文
摘要:
Future 最顶端的是 java.util.concurrent.Future 接口, 表示一个异步操作后的结果对象. 这里面有三个关键字: 异步, 操作, 结果. 首先, Future 首先是一个 “结果”; 其次这个结果产生于一个 “操作”, 操作具体是什么可以随便定义; 最后这个操作是 "异 阅读全文
摘要:
在 4.不完全的 NioEventLoopGroup & NioEventLoop 源码分析 文章中, 只是简单的说了一下 NioEventLoop 的继承, 以及实例化过程. 并没有对线程的开启以及任务的执行等有解释, 本篇主要来看这些. 创建 EventLoop 线程 EventLoop 线程的 阅读全文
摘要:
在 5.不完全的 ServerBootstrap 启动过程源码分析 文章中, 发现有好多类没有了解过, 后续几篇文章都会先了解这些类的左右, 然后在开始说处理客户端连接的问题. ChannelPipeline 是 ChannelHandler 的管理容器, 它内部维护了一个 ChannelHandl 阅读全文
摘要:
通过名字可以看出它是一个服务端的引导, 就是为了引导创建 Channel. Bootstrap 的继承结构 在 netty 的代码中, 类 ServerBootstrap 和类 Bootstrap 都继承自基类 AbstractBootstrap: channel类型 用于引导的bootstrap实 阅读全文
摘要:
创建服务端时需要先实例化两个 NioEventLoopGroup 分别为 bossGroup 和 workerGroup. bossGroup: 只是处理连接请求. workerGroup: 处理客户端业务逻辑. 上图是该类的继承关系, 我个人觉得没必要去了解完全这些类的作用, 只需要记住几个重点类 阅读全文
摘要:
关于 2.线程模型概述 有人问能回答上来就可以了. 但是对于 Netty 模型来说, 一定要了解透彻后才继续学习. 下面的图是我自己根据网上疯传的一种一张 Netty 模型图改的, 看着是不是有点像 主从 Reactor 多线程. Netty 抽象出了两组线程池, BossGroup 专门用来处理客 阅读全文
摘要:
目前存在的线程模型有: 传统阻塞 IO 服务模型 Reactor 模式, 根据 Reactor 数量和处理资源池线程的数量不同, 又有 3 重典型的实现. 单 Reactor 单线程 单 Reactor 多线程 主从 Reactor 多线程. 传统阻塞 IO 服务模型 1.一个线程对应一个客户端, 阅读全文
摘要:
原生 NIO 存在的问题 NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握 Selector, ServerSocketChannel, SocketChannel, ByteBuffer 等. 需要具备其它的额外技能: 要熟悉 Java 多线程编程, 因为 NIO 涉及到 Reactor 阅读全文