源码解析-Netty整体架构思路

画了张图,包含了netty的大部分组件,一些说明在图中标出便于理解

在我的理解看来可以将netty大体分为左右两部分

左半部分可以理解为线程池系列 用来执行具体任务,右半部分可以理解为核心组件系列 包括selector,channel,pipeline及handel,后面会逐个介绍

根据Netty官方提供的example包下的第一个例子,只连接不处理 来分析一下左右两部分分别是什么

 以客户端来分析

核心点几步:

1. 创建一个线程池组group;  //可以说几乎完成了左半部分线程池系列的全部初始化

2. 创建一个客户端Bootstrap;

3. 加入线程池组,

4. 加入socketChannel,     //设置了channelFactory 用来创建NioSocketChannel

5. 定义了ChannelInitializer,加入了自定义的handel;

6. 异步connect;       //这一步做的事比较多,new一个channel,初始化一个pipeline,将hendel全部加入到pipeline。从group中拿一个loop 将channel注入到loop中,启动loop线程,将channel注册到selector上

7. 关闭channel;

8. 关闭线程池组group;

左半部分线程池系列几乎都是由第1步创建线程池组完成的,当然还有第4步启动了loop的线程

右半部分核心组件初始化由4,5,6步完成。 

详细解析篇幅过长 分三篇食用

第一篇 源码解析-Netty源码之EventLoopGroup线程池分析

第二篇    源码解析-Netty源码之Bootstrap创建,初始化Channel,Pipeline,handler

 

了解Java NIO原理   源码解析-JavaNIO之Buffer,Channel

原文地址:https://www.cnblogs.com/ttaall/p/14192596.html