《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
Netty
服务启动,最重要的事情就是做好接受客户端连接的准备。我们分别看下自定义线程以及boss
线程所要完成的任务以及流程,如下所示:
这里罗列了一些比较重要的类名称及其对应的主要功能说明,以便于大家在阅读源码时可以快速了解对应类的功能:
| 类 | 作用 |
| — | — |
| ServerBootstrap | 服务端启动辅助类 |
| NioEventLoop | Nio事件处理器(Reactor模型) |
| NioEventLoopGroup | 一组Nio事件处理器(Reactor模型) |
在Netty
源码包中,我们首先看下 io.netty.example.echo
包中的EchoServer
类,该类中包含了Netty
服务启动相关代码,具体源码以及源码部分分析注释如下所示:
public final class EchoServer {
static final boolean SSL = System.getProperty(“ssl”) != null;
static final int PORT = Integer.parseInt(System.getProperty(“port”, “8007”));
public static void main(String[] args) throws Exception {
// Configure SSL.
final SslContext sslCtx;
if (SSL) {
SelfSignedCertificate ssc = new SelfSignedCertificate();
sslCtx = SslContextBuilder.forServer(ssc.certificate(), ssc.privateKey()).build();
} else {
sslCtx = null;
}
//处理连接事件
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
//处理读以及写的事件
EventLoopGroup workerGroup = new NioEventLoopGroup();
final EchoServerHandler serverHandler = new EchoServerHandler();
try {
//服务引导类
Serve