同步:当调用方法的线程和接收结果的线程是同一个,这意味着阻塞,那么是同步。
异步:当调用方法的线程和处理结果的线程不是同一个,这意味着不是阻塞,是异步。
下图是一个简单的Netty的客户端和服务器端
【执行步骤】
1、Server 创建引导启动器
2、Server创建事件循环组--里面是事件循环对象--事件循环对象包含(单线程+selector)
3、Server 创建ServerSokcetChannel
4、Server添加处理器,处理client的事件
5、Server创建连接通道,但是没有进行初始化,初始化是在与Client建立连接后才执行的。
6、Server绑定端口,等待Client访问。
7、Client 创建引导启动类
8、Client添加时间循环组
9、Client创建SocketChannel通道
10、Client 添加处理器。
11、Client建立连接
12、Client和Server 进行处理器初始化。
13、Client 的sync阻塞(同步等待)连接建立成功
14、Client 通过channel 将数据发送给Server
15、Client的处理器将数据转换为Bytebuf发送给客户端
16、Server的某一个EventLoop接收到这个read事件,将数据传送给Server的处理器
17、Server 将ByteBuf中的数据进行解码,得到String类型数据
18、读事件处理器。将数据进行处理,即打印。