二、重点非阻塞模型:NIO模型
1. Channel:和流等级一样,双向的,可读可写
2. Buffer:存数据的地方,可以用来读写
3. Selector:NIO的核心类,可以监听多个channel的时间(连接打开,数据到达)-->使得单线程可以管理多个channel,只有在读写事件发生时才找线程过来读写
4. NIO基于channel和buffer操作
a. 数据总是从channel读取到buffer
b. 或从buffer写到channel
5. 非阻塞实现:
a. 线程从channel请求读取数据,仅能获得能够直接使用的数据,
b. 无法使用时,可以去做其他事情,常用于其他channel的IO操作
IO操作的两个阶段:
1. 准备数据
2. 将数据复制到用户线程上,让线程可以使用数据
NIO和多路复用的区别是,NIO一直占用cpu一直在channel之间进行读写,多路复用是,读写事件发生时才让线程来读写