核心组件
- Channel
- Buffer
- Selector
channel
同一个网络连接用同一个通道表示,IO操作都是从通道开始的,既可以从通道中读取,也可以从通道中写入。通道结合了输入流和输出流。
Buffer
通道的读取就是把数据从通道读取到缓冲区,反之为写入。
Selector
这里回到IO多路复用,一个进程或者线程可以监视多个文件描述符,一旦其中的一个或者多个文件描述符可读或者可写,系统内核就会通知该进程或者线程。在Java中selector就是充当了这个监视器的作用,通过这个监视器,一个线程可以查询多个通道的IO事件就绪状态。
为了实现IO多路复用,首先把通道注册到选择器中,一个选择器只需要一个线程进行监控,我们可以很简单的使用一个线程,通过选择器去管理多个通道。
稍后继续~~