NIO三大核心原理示意图
说明:
- 每个Channel都会对应一个Buffer
- Selector对应一个线程,一个线程对应多个Channel连接
- 上图反应有三个Channel注册到Selector上
- 程序切换到那个Channel是有事件决定的,Event就是一个总要的概念
- Selector会根据不同的事件,在各个通道上切换
- Buffer就是一个内存块,底层是有一个数组
- 数据的读写是通过Buffer,这个和BIO不同,BIO中要么是输入流,要么是输出流,不能双向,但是NIO的Buffer是可以读,也可以写,需要通过filp方法进行切换
- Channel是双向的,可以返回底层操作系统的情况,比如Linux,底层的操作系统通道就是双向的
NIO中最核心的就是Selector、Channel、Buffer,切记