认识Java I/O | BIO NIO AIO | 同步与异步

2019-04-13  本文已影响0人  hisenyuan

原文:认识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》
上一篇下一篇

猜你喜欢

热点阅读