**
一、Java IO通信
**
BIO的特点:
- 一个线程负责连接;
- 一请求一应答;
- 缺乏弹性伸缩能力;
BIO通信模型如下:
伪异步IO通信:
- 线程池负责连接;
- M请求N应答;
- 线程池阻塞;
伪异步IO通信模型如下:
NIO通信
- 缓冲区buffer;
- 通道Channel;
- 多路复用器Selector;
AIO通信
- 连接注册读写事件和回调函数;
- 读写方法异步;
- 主动通知程序;
**
二、Netty的核心组件
**
Channel:它代表一个到实体的开放连接,如读操作和写操作;
回调:一个回调其实就是一个方法,一个指向已经被提供给另外一个方法的方法的引用;
Future:提供了另一种在操作完成时通知应用程序的方式。因为线程不用阻塞以等待对应的操作完成,所以它可以同时做其他的工作,从而更加有效地利用资源;
事件和ChannelHandler:Netty使用不同的事件来通知我们状态的改变或者是操作的状态,这使得我们能够基于已经发生的事件来触发适当的操作。每个事件都可以被分发给ChannelHandler类中的某个用户实现的方法;