摘要:
RocketMQ中通过DefaultMQProducer创建Producer DefaultMQProducer定义如下: 其中defaultMQProducerImpl成员是Producer的具体实现,其余的一些成员是对一些参数的设置:createTopicKey:是一个Topic值,在创建时使用 阅读全文
摘要:
ServerBootstrap的构造: 隐式地执行了父类的无参构造: 只是初始化了几个容器成员 在ServerBootstrap创建后,需要调用group方法,绑定EventLoopGroup,有关EventLoopGroup的创建在我之前博客中写过:Netty中NioEventLoopGroup的 阅读全文
摘要:
在Netty使用ChannelFuture和ChannelPromise进行异步操作的处理 这是官方给出的ChannelFutur描述 由图可以知道ChannelFutur有四种状态:Uncompleted、Completed successfully、Completed with failure、 阅读全文
摘要:
ChannelPipeline在Netty中是用来处理请求的责任链,默认实现是DefaultChannelPipeline,其构造方法如下: ChannelPipeline和Channel是一一对应关系,一个Channel绑定一条ChannelPipeline责任链succeededFuture 和 阅读全文
摘要:
Netty中使用FastThreadLocal替代JDK中的ThreadLocal【JAVA】ThreadLocal源码分析,其用法和ThreadLocal 一样,只不过从名字FastThreadLocal来看,其处理效率要比JDK中的ThreadLocal要高 在类加载的时候,先初始化了一个静态成 阅读全文
摘要:
NioEventLoopGroup的无参构造: 调用了单参的构造: 继续看到双参构造: 在这里是使用JDK中NIO的原生API:SelectorProvider的provider,产生了一个SelectorProvider对象调用,继续调用三参构造。关于SelectorProvider在我前面的博客 阅读全文
摘要:
该篇博客的有些内容和在之前介绍过了,在这里再次涉及到的就不详细说了,如果有不理解请看【Java】NIO中Channel的注册源码分析, 【Java】NIO中Selector的创建源码分析 Selector的创建在Windows下默认生成WindowsSelectorImpl对象,那么Selector 阅读全文
摘要:
Channel的注册是在SelectableChannel中定义的: 而其具体实现是在AbstractSelectableChannel中: 其中regLock和keyLock是两个对象,分别用来做注册锁和key集合锁 isOpen判断Channel是否关闭,只有在Channel关闭后才会令isOp 阅读全文
摘要:
在使用Selector时首先需要通过静态方法open创建Selector对象 可以看到首先是调用SelectorProvider的静态方法provider,得到一个Selector的提供者 这段代码的逻辑也比较简单,首先判断provider是否已经产生,若已经产生,则直接返回现有的;若没有,则需要调 阅读全文
摘要:
ServiceLoader主要的功能是用来完成对SPI的provider的加载。 先看下它的成员: 可以看到他首先是实现了Iterable接口,可以迭代。PREFIX:指明了路径是在"META-INF/services/"下。service:表示正在加载的服务的类或接口。loader:使用的类加载器 阅读全文