BIO、NIO与AIO的区别

BIO、NIO与AIO的区别
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

BIO、NIO与AIO的区别

BIO、NIO与AIO的区别

  • 同步阻塞BIO: 连接线程
  • 同步非阻塞NIO:请求线程
  • 异步非阻塞AIO:有效请求线程

同步 vs 异步
同步:JAVA自己处理IO读写
异步:将IO读写委托给OS(系统)

非阻塞 vs 阻塞
非阻塞:利用缓冲区先读写资源再通知应用
阻塞: 线程在处理之前可能要等待后端资源

NIO是IO的一个补充
IO的实际上就是数据经过缓冲区进行读、写操作。
Java NIO:数据从通道读入缓冲区,从缓冲区写入通道。

channel通道 ——>缓冲区(bytebuffer)——>channel通道
|
先write(),后read()

通道类似于流,但是有区别:

  • 1.通道既可以读数据,也可以写数据。但是流的读写操作是单向的。
  • 2.通道可以异步读取
  • 3.通道的数据总是要经过缓冲区

headbuffer vs directbuffer

  • headbuffer:在jvm内部分配内存作缓冲区,有jvm进行释放。

  • directbuffer:在JVM虚拟机外部申请内存,回收有GC申请,OS进行释放。由于channel传输较大文件,使用directbuffer具有效率优势。

在这里插入图片描述

本文来源蹊源的奇思妙想,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/14737

发表评论