Ch01-Java 之 IO

Ch01-Java 之 IO

July 15, 2021
Java | IO
java

1. Java IO 概览 #

java-io-overview

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 不支持