netty极简教程(二):Netty组件介绍

cover

本文原创地址,我的博客https://jsbintask.cn/2019/04/18/netty/netty-startup-process/(食用效果最佳),转载请注明出处!

Netty底层对JDK NIO进行了封装,而在jdk中,使用nio的主要类为事件轮询器Selector,以及流处理管道ServerSocketChannel,我们可以通过分析Netty源码来看看它是如何调用jdk底层NIO的。

案例

下面为一段经典Netty启动的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap b = new ServerBootstrap();
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class) // 1
.handler(new LoggingHandler(LogLevel.INFO)) // 2
.childHandler(new ChannelInitializer<SocketChannel>() { // 3
@Override
public void initChannel(SocketChannel ch) {
System.out.println("DiscardServer.initChannel");
ChannelPipeline p = ch.pipeline();
p.addLast(new DiscardServerHandler()); // 4
}
});

ChannelFuture f = b.bind(PORT).sync(); // 5
f.channel().closeFuture().sync();
} finally {
workerGroup.shutdownGracefully();
bossGroup.shutdownGracefully();
}

  1. 添加两个线程组,bossGroup用于轮询处理Selector接入的连接,workerGroup用于处理收到连接请求后的逻辑。
  2. 添加一个全局服务端

×

谢谢你支持我分享知识

扫码支持
扫码打赏,心意已收

打开微信扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 案例
欢迎扫描左方二维码跟作者交流.