随笔分类 - Netty
摘要:我们知道,Java NIO的ByteBuffer只有一个position指针标识位置,读写切换时需要调用flip()方法,这样容易出错。而Netty为了解决这个问题,使用了两个指针readerIndex、writerIndex。当然,Netty的ByteBuf的功能不仅仅如此,让我们一起看看Nett
阅读全文
摘要:一、NioEventLoop与NioEventLoopGroup的关系 二、NioEventLoop 1. 设计原理 1. 负责IO读写 2. 执行task。通过调用NioEventLoop的execute(Runnable task)方法实现。我们知道,为了防止资源竞争和并发操作,我们经常会判断当
阅读全文
摘要:Unsafe类实际上是Channel接口的辅助类,实际的IO操作都是由Unsafe接口完成的。 一、Unsafe继承关系图 二、AbstractUnsafe源码分析 1. register方法 register方法主要用于将当前Unsafe对应的Channel注册到EventLoop的多路复用器上,
阅读全文
摘要:前言:ChannelPipeline和ChannelHandler是类似于Spring拦截器的一种实现,数据在pipeline中传播,每个ChannelHandler处理自己感兴趣的部分。 一、ChannelPipeline ChannelPipeline是ChannelHandler的容器,负责C
阅读全文
摘要:一、Future Future源自java.util.concurrent.Future,用于获取异步操作的结果,它通过get()方法获取异步操作结果,操作尚未完成,则阻塞。 Netty认为这是一个很不好的设计,操作结束时间难以确定,何不通过回调的方式获取结果呢。Netty的ChannelFutur
阅读全文
摘要:前言:在阅读Netty源码前,我们先了解下Netty的基本使用方法。 一、服务端代码 二、客户端代码
阅读全文
摘要:一、Channel介绍 Channel中的NioServerSocketChannel 和 NioSocketChannel 分别于 NIO中的 ServerSocketChannel、SocketChannel对应。不同的是,Netty的Channel将NIO中的Channel聚合在自己对象内部,
阅读全文
摘要:前言:我们知道,Netty是基于NIO开发的一套框架,在学习Netty之前,我们先学习下Java NIO。 一、IO多路复用模型 IO多路复用模型使用了Reactor设计模式,主要有三种实现:Reacotr单线程、Reactor多线程、Reactor主从模式。 1. Reactor单线程 在Reac
阅读全文

浙公网安备 33010602011771号