认识Java I/O | BIO NIO AIO | 同步与异步 | 阻塞与非阻塞 | I/O多路复用

原文:认识Java I/O | BIO NIO AIO

一、名词解释

1.1 同步与异步

同步与异步更关注交互双方是否可以同时工作

  1. 同步:请求 -> 等待返回 -> 返回 -> 下一次请求,需要等待结果返回(CS非同时工作);
  2. 异步:客户端一直请求,服务端一直处理,不用等待结果返回,比如Future(CS同时工作);

1.2 阻塞与非阻塞

阻塞与非阻塞关注交互双方是否可以一心多用

  1. 阻塞:A->B,A一直等着B响应,期间不去干别的(一心一用);
  2. 非阻塞:A->B,A请求完成可以干别的,B响应了再回来继续处理(一心多用);

1.3 伪异步I/O

本质上还是同步阻塞I/O
不过是在服务器把socket链接封装成Task提交给线程池处理
因为有队列,所以可以突破C:S=1:1的比例

1.4 I/O多路复用

通过把多个I/O的阻塞复用到一个阻塞上,从而使得系统在单线程情况下可以处理多个客户端的请求。
类似于linux的epoll、select

1.5 多路复用器

Selector,核心是通过Selector来轮询注册在其上的Channel
当发现有Channel就绪就返回Channel的选择键集合,进行I/O操作;

二、不同I/O模型对比表格

不同I/O模型对比表格.png

三、参考

  1. 《Netty权威指南 2th》
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容