第四章 总结
属性\模型 | 阻塞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 NIO系列教程推荐
http://tutorials.jenkov.com/java-nio/asynchronousfilechannel.html
https://www.jianshu.com/p/465ecd909f8c(译)