基础 | NIO - [IO 发展]

Source

INDEX

BIO

  • 阻塞 IO
    • 读写请求会阻塞至有数据可供读写
    • 等待内核数据就绪并将数据传输到阻塞区
  • 会为每个请求开辟一个线程
    因此遇到高并发时,线程数量会爆炸

PIO

  • 伪异步阻塞 IO
  • 通常配合线程池模型使用的 IO
  • 解决了线程的频繁创灭问题
    但最大线程数和等候队列都打满时依然爆炸

NIO

  • 异步阻塞 IO
  • 读写会阻塞,但读写请求不会
  • 通过 Reactor 模式,注册 IO 事件
  • 可供读写的数据准备就绪时,才开始正式读写
  • 解决了从接收到读写请求,到可以真实进行读写之间的阻塞浪费

AIO

  • 异步非阻塞 IO
  • 读写不会阻塞
  • 引入异步通道
  • 代码简单
  • 依赖 Netty