Zhl Blog

充满好奇,保持谦逊,一途一心。

3-3.Netty源码:NioEventLoop处理事件

NioEventLoop处理事件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 //NioEventLoop @Override protected void run() { for (; ; ) { try { ...select部分... final int ioRatio =...

3-2.Netty源码:NioEventLoop循环检测事件

NioEventLoop循环检测事件

概述 首先整个循环是个死循环,进行事件监测 select的方法做了三件事: 必要的逻辑判断。 阻塞式select操作。 避免jdk空轮训bug。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //NioEventLoop.java @Override protected void run() { for (; ; ) ...

3-1.Netty源码:NioEventLoop启动

NioEventLoop启动

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //AbstractBootStrap.java private static void doBind0( final ChannelFuture regFuture, final Channel channel, final SocketAddress localAddress, fin...

2-1.Netty源码:服务端启动

服务端启动

参考【Netty源码:目录】中写的服务端启动代码 具体bind方法在AbstractBootstrap中实现的,表示新建一个Channel并且绑定它。删除了些后就这么多,后面围绕这块代码展开说 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 //AbstractBootstrap.java private ChannelF...

2-1-3.Netty源码:端口绑定

端口绑定

端口绑定 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //AbstractBootstrap.java private static void doBind0( final ChannelFuture regFuture, final Channel channel, final SocketAddress loca...

2-1-2.Netty源码:注册服务端channel

注册服务端channel

将新创建和初始化完毕的channel注册到selector中 1 ChannelFuture regFuture = config().group().register(channel); ` config().group()对应的类型是bossGroup类型,在MultithreadEventLoopGroup中有个next().register(channel) next的方法具体实...

2-1-1.Netty源码:初始化服务端的channel

初始化服务端的channel

初始化并且注册一个服务端的Channel 服务端的channel是通过反射创建出来的 1 2 3 4 5 6 7 8 9 10 11 12 13 //AbstractBootstrap.java final ChannelFuture initAndRegister() { Channel channel = null; try { channel = chan...

Netty源码:ChannelFuture

ChannelFuture

主要就是对Netty中的Future和ChannelFuture的文档大概翻译一下,Netty的文档写的比较详细,认真看下来也是收获颇多。 Netty中也有个Future接口,在io.netty.util.concurrent包中。 jdk自带的Future接口是在java.utail.concurrent。 先上ChannelFuture,Future和jdk的Future的关系图 ...

1-2.Netty源码:构建ServerBootstrap以及它的调用链

构建ServerBootstrap以及它的调用链

先上部分代码,这块代码就是服务端启动demo的一部分,这篇文章就是对这块代码进行描述 1 2 3 4 5 6 7 8 9 10 11 12 ... ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.group(bossGroup, wordGroup) .channel(NioServerSo...

1-2-1.Netty源码:服务端NioServerSocketChanne构造方法

服务端NioServerSocketChanne构造方法

概述 服务端的channel是通过反射创建出来的,具体这个NioServerSocketChannel的初始化是在什么时候发生的后面会介绍。先看这个类的无参构造方法。 NioServerSocketChannel的类的继承关系图,有删减 1 2 3 4 //无参构造方法 public NioServerSocketChannel() { this(newSocket(DEF...