HengYk Blog

个人站

具有浪漫主义情调的理想主义务实青年


Java BNASummary

第四章 总结

属性\模型 阻塞BIO 非阻塞NIO 异步AIO
blocking 阻塞并同步 非阻塞但同步 非阻塞并异步
线程数(server:client) 1:1 1:N 0:N
复杂度 简单 较复杂 复杂
吞吐量

       BIO(同步阻塞IO):在进行处理的时候是通过一个线程进行操作,并且IO实现通讯的时候采用的是阻塞模式;你现在通过水壶烧水,在BIO的世界里面,烧水这一过程你需要从头一直监视到结尾。

       NIO(同步非阻塞IO):不断的进行烧水状态的判断,同时你可以做其他的事情。

       AIO(异步非阻塞IO):烧水的过程你不用关注,如果水一旦烧好了,就会给你一个反馈。


最后,我们用一张图总结BIO、NIO、AIO的工作模式。

  • 针对上图更多解释可参考https://www.jianshu.com/p/8ad464ed516e(强烈推荐)

博主GitHub源码

https://github.com/HengYk/BNADemo 厚颜无耻求Star 点我

参考资料(致谢)

Java aio 编程

Netty序章之BIO NIO AIO演变

浅谈“阻塞同步”

Java NIO AsynchronousFileChannel

Java NIO系列教程推荐

http://tutorials.jenkov.com/java-nio/asynchronousfilechannel.html

https://www.jianshu.com/p/465ecd909f8c(译)