JAVA——重点非阻塞模型:NIO模型及IO操作步骤

二、重点非阻塞模型: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操作

JAVA——重点非阻塞模型:NIO模型及IO操作步骤_第1张图片

IO操作的两个阶段:
1. 准备数据
2. 将数据复制到用户线程上,让线程可以使用数据
NIO和多路复用的区别是,NIO一直占用cpu一直在channel之间进行读写,多路复用是,读写事件发生时才让线程来读写

你可能感兴趣的:(JAVA——重点非阻塞模型:NIO模型及IO操作步骤)