Netty源码
文章平均质量分 90
ws92dj
这个作者很懒,什么都没留下…
展开
-
Channel的注册流程分析
在AbstractBootStrap类的initAndRegister()方法中,先进行对Channel的初始化,在初始化过程结束之后,会执行Channel的注册流程逻辑。如下图:上图所示源码中,ChannelFuture regFuture = config().group().register(channel);执行Channel注册到EventLoop 上的流程。1. config()...原创 2019-03-25 12:41:33 · 2006 阅读 · 0 评论 -
Channel和ChannelPipeline以及ChannelHandlerContext
Channel1.Channel是一组socket或者能够执行i/o操作(读写,连接和绑定)的组件的连接。channel可以提供:channel目前的状态,比如打开,或者已连接状态。channel的配置参数。channel支持的i/o操作提供channelpipeline,可以处理所有的i/o事件或者请求。2.所有的i/o操作都是异步的。这意味着任何的i/o调用都会立即返回,并且...原创 2019-03-26 11:16:10 · 879 阅读 · 1 评论 -
ChannelInitializer组件分析
1.一个特殊的ChannelInboundHandler,它提供了一种Channel注册到EventLoop后初始化Channel的简便方法。实现最常用于Bootstrap.handler(ChannelHandler),ServerBootStrap.handler(ChannelHandler)和ServerBootStrap.childHandler(ChannelHandler). ...原创 2019-03-24 14:27:07 · 601 阅读 · 0 评论 -
Attribute AttributeKey与AttributeMap
1.attribute允许存储一个值引用。它可以原子更新,因此它是线程安全的。2.attribute是一个属性对象,这个属性的key为AttributeKey,属性的值T为value。3.AttributeKey继承自AbstractConstant,因此也由ConstantPool创建。4.Channel类本身继承了AttributeMap,而AttributeMap它持有多个Attrib...原创 2019-03-27 12:02:20 · 2524 阅读 · 0 评论 -
Netty底层系统架构
1.执行Channel的任何一个操作,都会验证是否是对应的EventLoop中所包含的那个线程在执行。如果不是,则以提交任务的的形式让其执行所有所有属于Channel的同一个操作。任务的提交顺序与任务的执行顺序是完全一致的。2.在Netty中,Channel的实现是线程安全的,基于此,我们可以存储一个Channel的引用,并且在需要向远程端点发送数据时,通过这个引用来调用Channel相应的方法...原创 2019-03-27 20:13:11 · 218 阅读 · 0 评论 -
Netty异步读写操作的架构与观察者模式的应用
1.Netty中的FutureNetty中的Future继承了java.util.concurrent.Future,java的Future主要是运行或者取消任务,而Netty中增加了更多的功能。public interface Future<V> extends java.util.concurrent.Future<V> { boolean isSu...原创 2019-04-16 13:43:19 · 1102 阅读 · 1 评论 -
Netty与Reactor线程模型
Netty是一个高性能,异步的事件驱动的Java NIO框架,它的所有I/O操作都是异步非阻塞的,在看Netty中Reactor模型之前,先看下Java NIO中的原创 2019-05-13 21:41:23 · 140 阅读 · 0 评论