java 编程

BIO、NIO、AIO 网络通信区别

2018-02-10  本文已影响0人  真海ice

BIO 为阻塞式通信,主要性能消耗在开启新线程负责客户端的链接,该线程会一直等待直到客户端数据发送完,中间可能因为网速问题,文件太大 等,造成该线程长期处于等待状态,浪费该线程的开销。如下图:

bio.png

NIO为非阻塞通信,基于事件通知机制。当有客户端请求时,会先把客户端的数据存储到系统缓存,等数据发送完毕,程序再开启一个线程去系统缓存拉去数据或者对数据其他处理 (如文件数据直接存入硬盘,是零拷贝数据不进入程序内 )效率高。
下图可以粗略理解一下,一个客户端请求的事件通知,

nio.png

AIO为 NIO2.0 版本,JDK1.7后才有,完全异步非阻塞通信。

总结:

一、 BIO和NIO不同:本质就是阻塞和非阻塞的区别
二、 同步和异步不同:指操作系统与应用程序对IO的操作不同

同步指的是server服务器
阻塞指的是具体的技术(BIO/NIO)
*对AIO的封装,即是 Netty *

上一篇 下一篇

猜你喜欢

热点阅读