Ch01-Java 之 IO
July 15, 2021
1. Java IO 概览 #
2. 阻塞/非阻塞 VS 同步/非同步 #
2.1 阻塞 IO 和 非阻塞 IO #
这两个概念是程序级别的。主要描述的是程序请求操作系统 IO 操作后,如果 IO 资源没有准备好,那么程序该如何处理的问题:前者等待;后者继续执行 (并且使用线程一直轮询,直到有 IO 资源准备好了)
2.2 同步 IO 和 非同步 IO #
这两个概念是操作系统级别的。主要描述的是操作系统在收到程序请求 IO 操作后,如果 IO 资源没有准备好,该如何响应程序的问题:前者不响应,直到 IO 资源准备好以后;后者返回一个标记 (好让程序和自己知道以后的数据往哪里通知),当 IO 资源准备好以后,再用事件机制返回给程序。
3. OS IO 多路复用 #
IO 模型 | 相对性能 | 关键思路 | 操作系统 | JAVA 支持情况 |
---|---|---|---|---|
select | 较高 | Reactor | windows/Linux | 支持 |
poll | 较高 | Reactor | Linux | 支持 |
epoll | 高 | Reactor/Proactor | Linux | 支持 |
kqueue | 高 | Proactor | Linux | 不支持 |