10.NIO-IO模型

1.5、NIO BIO
1.5.1、Stream Channel
  • stream 不会自动缓冲数据,channel 会利用系统提供的发送缓冲区、接收缓冲区(更为底层)
  • stream 仅支持阻塞 API,channel 同时支持阻塞、非阻塞 API,网络 channel 可配合 selector 实现多路复用
  • 二者均为全双工,即读写可以同时进行
1.5.2、IO模型

同步阻塞、同步非阻塞、同步多路复用、异步阻塞(没有此情况)、异步非阻塞

  • 同步:线程自己去获取结果(一个线程)
  • 异步:线程自己不去获取结果,而是由其它线程送结果(至少两个线程)

当调用一次 channel.read 或 stream.read 后,会切换至操作系统内核态来完成真正数据读取,而读取又分为两个阶段,分别为:

等待数据阶段和复制数据阶段

  • 阻塞IO

  • 非阻塞IO

    read阶段非阻塞,复制数据阶段阻塞

  • 多路复用

  • 信号驱动

  • 异步IO

  • 阻塞 IO vs 多路复用

posted @ 2022-10-12 13:39  jpy  阅读(25)  评论(0)    收藏  举报